Синтаксис:
Используется csharp
using System;
using System.Collections;
using System.Diagnostics;
using UnityEngine;
public class RPG_Pawn : RPG_Actor
{
public enum BodyParts
{
Head,
Helmet,
Body,
Foots,
Hands
}
[Serializable]
public class PawnSkills
{
public int Level;
public float TwoHandsFireWeapon;
public float OneHandFireWeapon;
public PawnSkills()
{
this.Level = 1;
this.TwoHandsFireWeapon = 0.05f;
this.OneHandFireWeapon = 0.05f;
}
}
[Serializable]
public class LocomotionGroup
{
public string NoGunsGroupName = "locomotion";
public string OneHandWeaponDownGroupName = "locomotion";
public string TwoHandsWeaponDownGroupName = "locomotion";
public string OneHandWeaponUpGroupName = "locomotion";
public string TwoHandsWeaponUpGroupName = "locomotion";
public string OneHandWeaponFireGroupName = "locomotion";
public string TwoHandsWeaponFireGroupName = "locomotion";
public string HandsUpGroupName = "locomotion";
}
[Serializable]
public class WeaponSlots
{
public Transform SlotWeaponAxe;
public Transform SlotWeaponDagger;
public Transform SlotWeaponMace;
public Transform SlotWeaponSword;
public Transform SlotQUIVER;
public Transform SlotWeaponBack;
public Transform SlotWeaponBow;
public Transform SlotSHIELD;
public Transform SlotWEAPON;
}
[Serializable]
public class SingleAnimation
{
public AnimationClip OneHandWeaponEquip;
public float PauseOneHandWeaponEquip = 1f;
public AnimationClip[] OneHandWeaponAtack;
public AnimationClip OneHandWeaponUnequip;
public float PauseOneHandWeaponUnequip = 1f;
public AnimationClip TwoHandsWeaponEquip;
public float PauseTwoHandsWeaponEquip = 1f;
public AnimationClip[] TwoHandsWeaponAtack;
public AnimationClip TwoHandsWeaponUnequip;
public float PauseTwoHandsWeaponUnequip = 1f;
public AnimationClip HandsEquip;
public AnimationClip HandsUnequip;
public float PauseHandsEquip = 1f;
public AnimationClip[] HandsAtack;
public AnimationClip ReloadOneHandWeapon;
public AnimationClip ReloadTwoHandsWeapon;
}
[Serializable]
public class PawnParts
{
public GameObject[] Head;
public GameObject[] Helmet;
public GameObject[] Body;
public GameObject[] Foots;
public GameObject[] Hands;
public void HidePawnPart(RPG_Pawn.BodyParts _part)
{
switch (_part)
{
case RPG_Pawn.BodyParts.Head:
this.Hide(this.Head);
break;
case RPG_Pawn.BodyParts.Helmet:
this.Hide(this.Helmet);
break;
case RPG_Pawn.BodyParts.Body:
this.Hide(this.Body);
break;
case RPG_Pawn.BodyParts.Foots:
this.Hide(this.Foots);
break;
case RPG_Pawn.BodyParts.Hands:
this.Hide(this.Hands);
break;
default:
Debug.LogWarning(_part + " не существует или не обрабатывается");
break;
}
}
public void ShowPawnPart(RPG_Pawn.BodyParts _part)
{
switch (_part)
{
case RPG_Pawn.BodyParts.Head:
this.Show(this.Head);
break;
case RPG_Pawn.BodyParts.Helmet:
this.Show(this.Helmet);
break;
case RPG_Pawn.BodyParts.Body:
this.Show(this.Body);
break;
case RPG_Pawn.BodyParts.Foots:
this.Show(this.Foots);
break;
case RPG_Pawn.BodyParts.Hands:
this.Show(this.Hands);
break;
default:
Debug.LogWarning(_part + " не существует или не обрабатывается");
break;
}
}
private void Hide(GameObject[] part)
{
for (int i = 0; i < part.Length; i++)
{
GameObject gameObject = part[i];
gameObject.active = false;
}
}
private void Show(GameObject[] part)
{
for (int i = 0; i < part.Length; i++)
{
GameObject gameObject = part[i];
gameObject.active = true;
}
}
}
public enum Slots
{
WeaponAxe,
WeaponDagger,
WeaponMace,
WeaponSword,
QUIVER,
WeaponBack,
WeaponBow,
SHIELD,
WEAPON
}
public enum State
{
Idle,
Move,
Atack
}
private const float ROTATE_SWAP = 1f;
public int Team;
public RPG_Pawn.PawnSkills Skills;
public RPG_Pawn.PawnParts Parts;
public bool GodMode;
public RPG_Pawn.LocomotionGroup GroupsLocomotion;
public RPG_Pawn.WeaponSlots PawnSlots;
public RPG_Pawn.SingleAnimation SingleAnimations;
public RPG_Pawn.State _state;
public int Money = 100;
public int Points = 100;
public float TimeToDestroy;
public DialogManager DialogManager;
public Transform TopBodyStartBone;
public Transform RootBone;
public Transform DropDownPoint;
public GameObject DeadBody;
public string DeadBodyChestBoneName = "NPC/NPC Root [Root]";
public RPG_Weapon myWeapon;
[HideInInspector]
public RPG_Controller myController;
private bool _canFire;
private bool _isFlashLight;
private RPG_WeaponController _wc;
private CharacterMotor motor;
private NavMeshAgent NMA;
public bool CanFire
{
get
{
return this._canFire;
}
set
{
this._canFire = value;
}
}
public bool IsFlashLight
{
get
{
return this._isFlashLight;
}
set
{
this._isFlashLight = value;
}
}
public override void Awake()
{
base.Awake();
if (this.SingleAnimations.ReloadOneHandWeapon)
{
base.animation[this.SingleAnimations.ReloadOneHandWeapon.name].layer = 1;
base.animation[this.SingleAnimations.ReloadOneHandWeapon.name].wrapMode = WrapMode.Once;
base.animation[this.SingleAnimations.ReloadOneHandWeapon.name].time = 0f;
base.animation[this.SingleAnimations.ReloadOneHandWeapon.name].AddMixingTransform(this.TopBodyStartBone);
}
if (this.SingleAnimations.ReloadTwoHandsWeapon)
{
base.animation[this.SingleAnimations.ReloadTwoHandsWeapon.name].layer = 1;
base.animation[this.SingleAnimations.ReloadTwoHandsWeapon.name].wrapMode = WrapMode.Once;
base.animation[this.SingleAnimations.ReloadTwoHandsWeapon.name].time = 0f;
base.animation[this.SingleAnimations.ReloadTwoHandsWeapon.name].AddMixingTransform(this.TopBodyStartBone);
}
this._wc = base.GetComponent<RPG_WeaponController>();
this.DialogManager = base.GetComponent<DialogManager>();
this.motor = base.GetComponent<CharacterMotor>();
this.NMA = base.GetComponent<NavMeshAgent>();
}
public override void Update()
{
base.Update();
switch (this._state)
{
case RPG_Pawn.State.Idle:
this.Idle();
break;
case RPG_Pawn.State.Move:
this.Move();
break;
case RPG_Pawn.State.Atack:
this.Attack();
break;
default:
Debug.LogWarning("Такой стэйт не обрабатывается - " + this._state);
break;
}
}
private void Idle()
{
if (!this.motor && !this.NMA)
{
return;
}
if (this.NMA)
{
if (this.NMA.velocity.magnitude > 0f)
{
this._state = RPG_Pawn.State.Move;
return;
}
}
else
{
if (this.motor.desiredVelocity.magnitude > 0f)
{
this.motor.desiredFacingDirection = Vector3.zero;
this._state = RPG_Pawn.State.Move;
return;
}
}
if (this.myWeapon)
{
if (base.tag == "Player")
{
this.motor.desiredFacingDirection = Camera.main.transform.forward;
}
}
else
{
if (base.tag == "Player")
{
this.motor.desiredFacingDirection = Vector3.zero;
}
}
}
private void Move()
{
if (!this.motor && !this.NMA)
{
return;
}
if (this.NMA)
{
if (this.NMA.velocity.magnitude == 0f)
{
this._state = RPG_Pawn.State.Idle;
}
}
else
{
if (this.motor.desiredVelocity.magnitude == 0f)
{
this._state = RPG_Pawn.State.Idle;
}
}
}
private void Rotate()
{
if (base.tag == "Player" && this.motor)
{
this.motor.desiredFacingDirection = Camera.main.transform.forward;
}
}
private void Attack()
{
if (base.tag == "Player" && this.motor)
{
this.motor.desiredFacingDirection = Camera.main.transform.forward;
}
}
public Transform GetSlotsByType(RPG_Pawn.Slots slotType)
{
switch (slotType)
{
case RPG_Pawn.Slots.WeaponAxe:
return this.PawnSlots.SlotWeaponAxe;
case RPG_Pawn.Slots.WeaponDagger:
return this.PawnSlots.SlotWeaponDagger;
case RPG_Pawn.Slots.WeaponMace:
return this.PawnSlots.SlotWeaponMace;
case RPG_Pawn.Slots.WeaponSword:
return this.PawnSlots.SlotWeaponSword;
case RPG_Pawn.Slots.QUIVER:
return this.PawnSlots.SlotQUIVER;
case RPG_Pawn.Slots.WeaponBack:
return this.PawnSlots.SlotWeaponBack;
case RPG_Pawn.Slots.WeaponBow:
return this.PawnSlots.SlotWeaponBow;
case RPG_Pawn.Slots.SHIELD:
return this.PawnSlots.SlotSHIELD;
case RPG_Pawn.Slots.WEAPON:
return this.PawnSlots.SlotWEAPON;
default:
return null;
}
}
public void StartFire()
{
if (this._state == RPG_Pawn.State.Atack)
{
return;
}
if (!this._wc)
{
Debug.LogWarning("Стрельба не возможна, нет RPG_WeaponController");
return;
}
if (!this._wc.CanFire() || !this.myWeapon)
{
return;
}
if (this.motor)
{
this.motor.desiredFacingDirection = Camera.main.transform.forward;
}
this._wc.StartFire();
this.CanFire = true;
}
[DebuggerHidden]
private IEnumerator StartFireDelay(float _delay)
{
RPG_Pawn.<StartFireDelay>c__Iterator1C <StartFireDelay>c__Iterator1C = new RPG_Pawn.<StartFireDelay>c__Iterator1C();
<StartFireDelay>c__Iterator1C._delay = _delay;
<StartFireDelay>c__Iterator1C.<$>_delay = _delay;
<StartFireDelay>c__Iterator1C.<>f__this = this;
return <StartFireDelay>c__Iterator1C;
}
public void TryStopFire()
{
this.CanFire = false;
}
public void StopFire()
{
if (!this._wc)
{
Debug.LogWarning("нет RPG_WeaponController");
return;
}
if (!this.myWeapon)
{
return;
}
this._wc.StopFire();
if (this.motor || this.NMA)
{
if (this.NMA)
{
if (this.NMA.velocity.magnitude > 0f)
{
this._state = RPG_Pawn.State.Move;
}
else
{
this._state = RPG_Pawn.State.Idle;
}
}
else
{
if (this.motor.desiredVelocity.magnitude > 0f)
{
this._state = RPG_Pawn.State.Move;
}
else
{
this._state = RPG_Pawn.State.Idle;
}
}
}
this.SetReadyWeaponPose();
if (this.motor)
{
this.motor.desiredFacingDirection = Vector3.zero;
}
}
public bool TryCarryWeapon(int ID)
{
RPG_Weapon rPG_Weapon = this._wc.TryCarryWeapon(ID);
if (rPG_Weapon)
{
this.myWeapon = rPG_Weapon;
switch (rPG_Weapon.TypeOfWeapon)
{
case RPG_Weapon.WeaponType.OneHandBlade:
base.animation[this.SingleAnimations.OneHandWeaponUnequip.name].wrapMode = WrapMode.Once;
base.animation[this.SingleAnimations.OneHandWeaponUnequip.name].layer = 1;
base.animation.CrossFade(this.SingleAnimations.OneHandWeaponUnequip.name, 0.3f);
base.StartCoroutine("CarryWeaponDelay", this.SingleAnimations.PauseOneHandWeaponUnequip);
return true;
case RPG_Weapon.WeaponType.OneHandShoot:
break;
case RPG_Weapon.WeaponType.OneHandCrash:
base.animation[this.SingleAnimations.OneHandWeaponUnequip.name].wrapMode = WrapMode.Once;
base.animation[this.SingleAnimations.OneHandWeaponUnequip.name].layer = 1;
base.animation.CrossFade(this.SingleAnimations.OneHandWeaponUnequip.name, 0.3f);
base.StartCoroutine("CarryWeaponDelay", this.SingleAnimations.PauseOneHandWeaponUnequip);
return true;
case RPG_Weapon.WeaponType.TwoHandsBlade:
base.animation[this.SingleAnimations.OneHandWeaponUnequip.name].wrapMode = WrapMode.Once;
base.animation[this.SingleAnimations.OneHandWeaponUnequip.name].layer = 1;
base.animation.CrossFade(this.SingleAnimations.OneHandWeaponUnequip.name, 0.3f);
base.StartCoroutine("CarryWeaponDelay", this.SingleAnimations.PauseOneHandWeaponUnequip);
return true;
case RPG_Weapon.WeaponType.TwoHandsShoot:
break;
case RPG_Weapon.WeaponType.TwoHandsCrash:
base.animation[this.SingleAnimations.OneHandWeaponUnequip.name].wrapMode = WrapMode.Once;
base.animation[this.SingleAnimations.OneHandWeaponUnequip.name].layer = 1;
base.animation.CrossFade(this.SingleAnimations.OneHandWeaponUnequip.name, 0.3f);
base.StartCoroutine("CarryWeaponDelay", this.SingleAnimations.PauseOneHandWeaponUnequip);
return true;
case RPG_Weapon.WeaponType.Hands:
break;
default:
Debug.LogWarning("тип оружия <" + rPG_Weapon.TypeOfWeapon + "> не обрабатывается");
break;
}
}
return false;
}
[DebuggerHidden]
private IEnumerator CarryWeaponDelay(float delay)
{
RPG_Pawn.<CarryWeaponDelay>c__Iterator1D <CarryWeaponDelay>c__Iterator1D = new RPG_Pawn.<CarryWeaponDelay>c__Iterator1D();
<CarryWeaponDelay>c__Iterator1D.<>f__this = this;
return <CarryWeaponDelay>c__Iterator1D;
}
public RPG_Weapon TryReadyWeapon(int ID)
{
RPG_Weapon rPG_Weapon = this._wc.TryReadyWeapon(ID);
if (rPG_Weapon)
{
this.myWeapon = rPG_Weapon;
switch (rPG_Weapon.TypeOfWeapon)
{
case RPG_Weapon.WeaponType.OneHandBlade:
base.animation[this.SingleAnimations.OneHandWeaponEquip.name].wrapMode = WrapMode.Once;
base.animation[this.SingleAnimations.OneHandWeaponEquip.name].layer = 1;
base.animation.CrossFade(this.SingleAnimations.OneHandWeaponEquip.name, 0.3f);
base.StartCoroutine("ReadyWeaponDelay", this.SingleAnimations.PauseOneHandWeaponEquip);
break;
case RPG_Weapon.WeaponType.OneHandShoot:
break;
case RPG_Weapon.WeaponType.OneHandCrash:
base.animation[this.SingleAnimations.OneHandWeaponEquip.name].wrapMode = WrapMode.Once;
base.animation[this.SingleAnimations.OneHandWeaponEquip.name].layer = 1;
base.animation.CrossFade(this.SingleAnimations.OneHandWeaponEquip.name, 0.3f);
base.StartCoroutine("ReadyWeaponDelay", this.SingleAnimations.PauseOneHandWeaponEquip);
break;
case RPG_Weapon.WeaponType.TwoHandsBlade:
base.animation[this.SingleAnimations.TwoHandsWeaponEquip.name].wrapMode = WrapMode.Once;
base.animation[this.SingleAnimations.TwoHandsWeaponEquip.name].layer = 1;
base.animation.CrossFade(this.SingleAnimations.TwoHandsWeaponEquip.name, 0.3f);
base.StartCoroutine("ReadyWeaponDelay", this.SingleAnimations.PauseTwoHandsWeaponEquip);
break;
case RPG_Weapon.WeaponType.TwoHandsShoot:
break;
case RPG_Weapon.WeaponType.TwoHandsCrash:
base.animation[this.SingleAnimations.TwoHandsWeaponEquip.name].wrapMode = WrapMode.Once;
base.animation[this.SingleAnimations.TwoHandsWeaponEquip.name].layer = 1;
base.animation.CrossFade(this.SingleAnimations.TwoHandsWeaponEquip.name, 0.3f);
base.StartCoroutine("ReadyWeaponDelay", this.SingleAnimations.PauseTwoHandsWeaponEquip);
break;
case RPG_Weapon.WeaponType.Hands:
break;
default:
Debug.LogWarning("тип оружия <" + rPG_Weapon.TypeOfWeapon + "> не обрабатывается");
break;
}
return rPG_Weapon;
}
return null;
}
[DebuggerHidden]
private IEnumerator ReadyWeaponDelay(float delay)
{
RPG_Pawn.<ReadyWeaponDelay>c__Iterator1E <ReadyWeaponDelay>c__Iterator1E = new RPG_Pawn.<ReadyWeaponDelay>c__Iterator1E();
<ReadyWeaponDelay>c__Iterator1E.<>f__this = this;
return <ReadyWeaponDelay>c__Iterator1E;
}
public void DropAllWeapons()
{
this._wc.DropAllWeapons();
}
public void SetCarryWeaponPose()
{
base.animation.CrossFade(this.GroupsLocomotion.NoGunsGroupName, 0.3f);
}
public void SetReadyWeaponPose()
{
switch (this.myWeapon.TypeOfWeapon)
{
case RPG_Weapon.WeaponType.OneHandBlade:
base.animation.CrossFade(this.GroupsLocomotion.OneHandWeaponDownGroupName, 0.3f);
return;
case RPG_Weapon.WeaponType.OneHandShoot:
base.animation.CrossFade(this.GroupsLocomotion.OneHandWeaponDownGroupName, 0.3f);
return;
case RPG_Weapon.WeaponType.TwoHandsBlade:
base.animation.CrossFade(this.GroupsLocomotion.TwoHandsWeaponDownGroupName, 0.3f);
return;
case RPG_Weapon.WeaponType.TwoHandsShoot:
base.animation.CrossFade(this.GroupsLocomotion.TwoHandsWeaponDownGroupName, 0.3f);
return;
case RPG_Weapon.WeaponType.Hands:
base.animation.CrossFade(this.GroupsLocomotion.HandsUpGroupName, 0.3f);
return;
}
Debug.LogWarning("Такой тип не обрабатывается - " + this.myWeapon.TypeOfWeapon);
base.animation.CrossFade(this.GroupsLocomotion.NoGunsGroupName, 0.3f);
}
public void SetFireWeaponPose()
{
bool flag = false;
if (this.motor && this.motor.desiredVelocity.magnitude > 0f)
{
flag = true;
}
this._state = RPG_Pawn.State.Atack;
switch (this.myWeapon.TypeOfWeapon)
{
case RPG_Weapon.WeaponType.OneHandBlade:
{
int num = UnityEngine.Random.Range(0, this.SingleAnimations.OneHandWeaponAtack.Length);
if (flag)
{
base.animation[this.SingleAnimations.OneHandWeaponAtack[num].name].AddMixingTransform(this.TopBodyStartBone);
base.animation[this.SingleAnimations.OneHandWeaponAtack[num].name].layer = 1;
base.animation.CrossFade(this.SingleAnimations.OneHandWeaponAtack[num].name, 0.3f);
base.StartCoroutine("FireAnimationDelay", base.animation[this.SingleAnimations.OneHandWeaponAtack[num].name].length);
}
else
{
base.animation[this.SingleAnimations.OneHandWeaponAtack[num].name].AddMixingTransform(this.RootBone);
base.animation[this.SingleAnimations.OneHandWeaponAtack[num].name].layer = 0;
base.animation.CrossFade(this.SingleAnimations.OneHandWeaponAtack[num].name, 0.3f);
base.StartCoroutine("FireAnimationDelay", base.animation[this.SingleAnimations.OneHandWeaponAtack[num].name].length);
}
return;
}
case RPG_Weapon.WeaponType.OneHandShoot:
base.animation.CrossFade(this.GroupsLocomotion.OneHandWeaponUpGroupName, 0.3f);
return;
case RPG_Weapon.WeaponType.TwoHandsBlade:
{
int num = UnityEngine.Random.Range(0, this.SingleAnimations.OneHandWeaponAtack.Length);
if (flag)
{
base.animation[this.SingleAnimations.TwoHandsWeaponAtack[num].name].AddMixingTransform(this.TopBodyStartBone);
base.animation[this.SingleAnimations.TwoHandsWeaponAtack[num].name].layer = 1;
base.animation.CrossFade(this.SingleAnimations.TwoHandsWeaponAtack[num].name, 0.3f);
base.StartCoroutine("FireAnimationDelay", base.animation[this.SingleAnimations.TwoHandsWeaponAtack[num].name].length);
}
else
{
base.animation[this.SingleAnimations.TwoHandsWeaponAtack[num].name].AddMixingTransform(this.RootBone);
base.animation[this.SingleAnimations.TwoHandsWeaponAtack[num].name].layer = 0;
base.animation.CrossFade(this.SingleAnimations.TwoHandsWeaponAtack[num].name, 0.3f);
base.StartCoroutine("FireAnimationDelay", base.animation[this.SingleAnimations.TwoHandsWeaponAtack[num].name].length);
}
return;
}
case RPG_Weapon.WeaponType.TwoHandsShoot:
base.animation.CrossFade(this.GroupsLocomotion.TwoHandsWeaponUpGroupName, 0.3f);
return;
case RPG_Weapon.WeaponType.Hands:
{
int num = UnityEngine.Random.Range(0, this.SingleAnimations.OneHandWeaponAtack.Length);
if (flag)
{
base.animation[this.SingleAnimations.HandsAtack[num].name].AddMixingTransform(this.TopBodyStartBone);
base.animation[this.SingleAnimations.HandsAtack[num].name].layer = 1;
base.animation.CrossFade(this.SingleAnimations.HandsAtack[num].name, 0.3f);
base.StartCoroutine("FireAnimationDelay", base.animation[this.SingleAnimations.HandsAtack[num].name].length);
}
else
{
base.animation[this.SingleAnimations.HandsAtack[num].name].AddMixingTransform(this.RootBone);
base.animation[this.SingleAnimations.HandsAtack[num].name].layer = 0;
base.animation.CrossFade(this.SingleAnimations.HandsAtack[num].name, 0.3f);
base.StartCoroutine("FireAnimationDelay", base.animation[this.SingleAnimations.HandsAtack[num].name].length);
}
return;
}
}
Debug.LogWarning("Такой тип не обрабатывается - " + this.myWeapon.TypeOfWeapon);
base.animation.CrossFade(this.GroupsLocomotion.NoGunsGroupName, 0.3f);
}
[DebuggerHidden]
private IEnumerator FireAnimationDelay(float delay)
{
RPG_Pawn.<FireAnimationDelay>c__Iterator1F <FireAnimationDelay>c__Iterator1F = new RPG_Pawn.<FireAnimationDelay>c__Iterator1F();
<FireAnimationDelay>c__Iterator1F.delay = delay;
<FireAnimationDelay>c__Iterator1F.<$>delay = delay;
<FireAnimationDelay>c__Iterator1F.<>f__this = this;
return <FireAnimationDelay>c__Iterator1F;
}
public float TryToReloadWeapon()
{
Debug.Log("Pawn - " + this.ActorName + " перезаряжает оружие");
if (!this.myWeapon)
{
return 0f;
}
if (this.SingleAnimations.ReloadOneHandWeapon && this.myWeapon.TypeOfWeapon == RPG_Weapon.WeaponType.OneHandShoot)
{
base.animation.Play(this.SingleAnimations.ReloadOneHandWeapon.name);
return base.animation[this.SingleAnimations.ReloadOneHandWeapon.name].length;
}
if (this.SingleAnimations.ReloadTwoHandsWeapon && this.myWeapon.TypeOfWeapon == RPG_Weapon.WeaponType.TwoHandsShoot)
{
base.animation.Play(this.SingleAnimations.ReloadTwoHandsWeapon.name);
return base.animation[this.SingleAnimations.ReloadTwoHandsWeapon.name].length;
}
return 0f;
}
public void FlashLightOn()
{
Debug.Log("Паун пытается включить фонарик");
if (!this._wc)
{
Debug.LogWarning("нет RPG_WeaponController");
return;
}
this.IsFlashLight = true;
this._wc.FlashLightOn();
}
public void FlashLightOff()
{
Debug.Log("Паун пытается выключить фонарик");
if (!this._wc)
{
Debug.LogWarning("нет RPG_WeaponController");
return;
}
this.IsFlashLight = false;
this._wc.FlashLightOff();
}
public void MoneyExchange(int m)
{
this.Money += m;
}
public void PointsExchange(int p)
{
this.Points += p;
}
public override void TryToUse(RPG_Controller controller)
{
RPG_Base_AI component = base.GetComponent<RPG_Base_AI>();
if (component)
{
RPG_PlayerController component2 = controller.GetComponent<RPG_PlayerController>();
if (component2)
{
if (component.IsEnemy(component2.myPawn))
{
Debug.Log(component2.myPawn.ActorName + " для " + this.ActorName + " ВРАГ - говорить не станет");
return;
}
Debug.Log(component2.myPawn.ActorName + " для " + this.ActorName + " не враг - поговорим");
}
}
this.myController.TryToUseMyPawn(controller);
}
public override bool TryToSelect()
{
RPG_PlayerController pC = RPG_BaseHUD.Instance.PC;
if (!pC)
{
return false;
}
if (Vector3.Distance(pC.transform.position, base.transform.position) <= this.UsingRange)
{
this.SetSelected();
return true;
}
return false;
}
public override void HitMe(RPG_Actor _actor, float D)
{
if (this.GodMode && this.ActorHealth <= D)
{
D = 0f;
}
base.HitMe(_actor, D);
}
}
using System.Collections;
using System.Diagnostics;
using UnityEngine;
public class RPG_Pawn : RPG_Actor
{
public enum BodyParts
{
Head,
Helmet,
Body,
Foots,
Hands
}
[Serializable]
public class PawnSkills
{
public int Level;
public float TwoHandsFireWeapon;
public float OneHandFireWeapon;
public PawnSkills()
{
this.Level = 1;
this.TwoHandsFireWeapon = 0.05f;
this.OneHandFireWeapon = 0.05f;
}
}
[Serializable]
public class LocomotionGroup
{
public string NoGunsGroupName = "locomotion";
public string OneHandWeaponDownGroupName = "locomotion";
public string TwoHandsWeaponDownGroupName = "locomotion";
public string OneHandWeaponUpGroupName = "locomotion";
public string TwoHandsWeaponUpGroupName = "locomotion";
public string OneHandWeaponFireGroupName = "locomotion";
public string TwoHandsWeaponFireGroupName = "locomotion";
public string HandsUpGroupName = "locomotion";
}
[Serializable]
public class WeaponSlots
{
public Transform SlotWeaponAxe;
public Transform SlotWeaponDagger;
public Transform SlotWeaponMace;
public Transform SlotWeaponSword;
public Transform SlotQUIVER;
public Transform SlotWeaponBack;
public Transform SlotWeaponBow;
public Transform SlotSHIELD;
public Transform SlotWEAPON;
}
[Serializable]
public class SingleAnimation
{
public AnimationClip OneHandWeaponEquip;
public float PauseOneHandWeaponEquip = 1f;
public AnimationClip[] OneHandWeaponAtack;
public AnimationClip OneHandWeaponUnequip;
public float PauseOneHandWeaponUnequip = 1f;
public AnimationClip TwoHandsWeaponEquip;
public float PauseTwoHandsWeaponEquip = 1f;
public AnimationClip[] TwoHandsWeaponAtack;
public AnimationClip TwoHandsWeaponUnequip;
public float PauseTwoHandsWeaponUnequip = 1f;
public AnimationClip HandsEquip;
public AnimationClip HandsUnequip;
public float PauseHandsEquip = 1f;
public AnimationClip[] HandsAtack;
public AnimationClip ReloadOneHandWeapon;
public AnimationClip ReloadTwoHandsWeapon;
}
[Serializable]
public class PawnParts
{
public GameObject[] Head;
public GameObject[] Helmet;
public GameObject[] Body;
public GameObject[] Foots;
public GameObject[] Hands;
public void HidePawnPart(RPG_Pawn.BodyParts _part)
{
switch (_part)
{
case RPG_Pawn.BodyParts.Head:
this.Hide(this.Head);
break;
case RPG_Pawn.BodyParts.Helmet:
this.Hide(this.Helmet);
break;
case RPG_Pawn.BodyParts.Body:
this.Hide(this.Body);
break;
case RPG_Pawn.BodyParts.Foots:
this.Hide(this.Foots);
break;
case RPG_Pawn.BodyParts.Hands:
this.Hide(this.Hands);
break;
default:
Debug.LogWarning(_part + " не существует или не обрабатывается");
break;
}
}
public void ShowPawnPart(RPG_Pawn.BodyParts _part)
{
switch (_part)
{
case RPG_Pawn.BodyParts.Head:
this.Show(this.Head);
break;
case RPG_Pawn.BodyParts.Helmet:
this.Show(this.Helmet);
break;
case RPG_Pawn.BodyParts.Body:
this.Show(this.Body);
break;
case RPG_Pawn.BodyParts.Foots:
this.Show(this.Foots);
break;
case RPG_Pawn.BodyParts.Hands:
this.Show(this.Hands);
break;
default:
Debug.LogWarning(_part + " не существует или не обрабатывается");
break;
}
}
private void Hide(GameObject[] part)
{
for (int i = 0; i < part.Length; i++)
{
GameObject gameObject = part[i];
gameObject.active = false;
}
}
private void Show(GameObject[] part)
{
for (int i = 0; i < part.Length; i++)
{
GameObject gameObject = part[i];
gameObject.active = true;
}
}
}
public enum Slots
{
WeaponAxe,
WeaponDagger,
WeaponMace,
WeaponSword,
QUIVER,
WeaponBack,
WeaponBow,
SHIELD,
WEAPON
}
public enum State
{
Idle,
Move,
Atack
}
private const float ROTATE_SWAP = 1f;
public int Team;
public RPG_Pawn.PawnSkills Skills;
public RPG_Pawn.PawnParts Parts;
public bool GodMode;
public RPG_Pawn.LocomotionGroup GroupsLocomotion;
public RPG_Pawn.WeaponSlots PawnSlots;
public RPG_Pawn.SingleAnimation SingleAnimations;
public RPG_Pawn.State _state;
public int Money = 100;
public int Points = 100;
public float TimeToDestroy;
public DialogManager DialogManager;
public Transform TopBodyStartBone;
public Transform RootBone;
public Transform DropDownPoint;
public GameObject DeadBody;
public string DeadBodyChestBoneName = "NPC/NPC Root [Root]";
public RPG_Weapon myWeapon;
[HideInInspector]
public RPG_Controller myController;
private bool _canFire;
private bool _isFlashLight;
private RPG_WeaponController _wc;
private CharacterMotor motor;
private NavMeshAgent NMA;
public bool CanFire
{
get
{
return this._canFire;
}
set
{
this._canFire = value;
}
}
public bool IsFlashLight
{
get
{
return this._isFlashLight;
}
set
{
this._isFlashLight = value;
}
}
public override void Awake()
{
base.Awake();
if (this.SingleAnimations.ReloadOneHandWeapon)
{
base.animation[this.SingleAnimations.ReloadOneHandWeapon.name].layer = 1;
base.animation[this.SingleAnimations.ReloadOneHandWeapon.name].wrapMode = WrapMode.Once;
base.animation[this.SingleAnimations.ReloadOneHandWeapon.name].time = 0f;
base.animation[this.SingleAnimations.ReloadOneHandWeapon.name].AddMixingTransform(this.TopBodyStartBone);
}
if (this.SingleAnimations.ReloadTwoHandsWeapon)
{
base.animation[this.SingleAnimations.ReloadTwoHandsWeapon.name].layer = 1;
base.animation[this.SingleAnimations.ReloadTwoHandsWeapon.name].wrapMode = WrapMode.Once;
base.animation[this.SingleAnimations.ReloadTwoHandsWeapon.name].time = 0f;
base.animation[this.SingleAnimations.ReloadTwoHandsWeapon.name].AddMixingTransform(this.TopBodyStartBone);
}
this._wc = base.GetComponent<RPG_WeaponController>();
this.DialogManager = base.GetComponent<DialogManager>();
this.motor = base.GetComponent<CharacterMotor>();
this.NMA = base.GetComponent<NavMeshAgent>();
}
public override void Update()
{
base.Update();
switch (this._state)
{
case RPG_Pawn.State.Idle:
this.Idle();
break;
case RPG_Pawn.State.Move:
this.Move();
break;
case RPG_Pawn.State.Atack:
this.Attack();
break;
default:
Debug.LogWarning("Такой стэйт не обрабатывается - " + this._state);
break;
}
}
private void Idle()
{
if (!this.motor && !this.NMA)
{
return;
}
if (this.NMA)
{
if (this.NMA.velocity.magnitude > 0f)
{
this._state = RPG_Pawn.State.Move;
return;
}
}
else
{
if (this.motor.desiredVelocity.magnitude > 0f)
{
this.motor.desiredFacingDirection = Vector3.zero;
this._state = RPG_Pawn.State.Move;
return;
}
}
if (this.myWeapon)
{
if (base.tag == "Player")
{
this.motor.desiredFacingDirection = Camera.main.transform.forward;
}
}
else
{
if (base.tag == "Player")
{
this.motor.desiredFacingDirection = Vector3.zero;
}
}
}
private void Move()
{
if (!this.motor && !this.NMA)
{
return;
}
if (this.NMA)
{
if (this.NMA.velocity.magnitude == 0f)
{
this._state = RPG_Pawn.State.Idle;
}
}
else
{
if (this.motor.desiredVelocity.magnitude == 0f)
{
this._state = RPG_Pawn.State.Idle;
}
}
}
private void Rotate()
{
if (base.tag == "Player" && this.motor)
{
this.motor.desiredFacingDirection = Camera.main.transform.forward;
}
}
private void Attack()
{
if (base.tag == "Player" && this.motor)
{
this.motor.desiredFacingDirection = Camera.main.transform.forward;
}
}
public Transform GetSlotsByType(RPG_Pawn.Slots slotType)
{
switch (slotType)
{
case RPG_Pawn.Slots.WeaponAxe:
return this.PawnSlots.SlotWeaponAxe;
case RPG_Pawn.Slots.WeaponDagger:
return this.PawnSlots.SlotWeaponDagger;
case RPG_Pawn.Slots.WeaponMace:
return this.PawnSlots.SlotWeaponMace;
case RPG_Pawn.Slots.WeaponSword:
return this.PawnSlots.SlotWeaponSword;
case RPG_Pawn.Slots.QUIVER:
return this.PawnSlots.SlotQUIVER;
case RPG_Pawn.Slots.WeaponBack:
return this.PawnSlots.SlotWeaponBack;
case RPG_Pawn.Slots.WeaponBow:
return this.PawnSlots.SlotWeaponBow;
case RPG_Pawn.Slots.SHIELD:
return this.PawnSlots.SlotSHIELD;
case RPG_Pawn.Slots.WEAPON:
return this.PawnSlots.SlotWEAPON;
default:
return null;
}
}
public void StartFire()
{
if (this._state == RPG_Pawn.State.Atack)
{
return;
}
if (!this._wc)
{
Debug.LogWarning("Стрельба не возможна, нет RPG_WeaponController");
return;
}
if (!this._wc.CanFire() || !this.myWeapon)
{
return;
}
if (this.motor)
{
this.motor.desiredFacingDirection = Camera.main.transform.forward;
}
this._wc.StartFire();
this.CanFire = true;
}
[DebuggerHidden]
private IEnumerator StartFireDelay(float _delay)
{
RPG_Pawn.<StartFireDelay>c__Iterator1C <StartFireDelay>c__Iterator1C = new RPG_Pawn.<StartFireDelay>c__Iterator1C();
<StartFireDelay>c__Iterator1C._delay = _delay;
<StartFireDelay>c__Iterator1C.<$>_delay = _delay;
<StartFireDelay>c__Iterator1C.<>f__this = this;
return <StartFireDelay>c__Iterator1C;
}
public void TryStopFire()
{
this.CanFire = false;
}
public void StopFire()
{
if (!this._wc)
{
Debug.LogWarning("нет RPG_WeaponController");
return;
}
if (!this.myWeapon)
{
return;
}
this._wc.StopFire();
if (this.motor || this.NMA)
{
if (this.NMA)
{
if (this.NMA.velocity.magnitude > 0f)
{
this._state = RPG_Pawn.State.Move;
}
else
{
this._state = RPG_Pawn.State.Idle;
}
}
else
{
if (this.motor.desiredVelocity.magnitude > 0f)
{
this._state = RPG_Pawn.State.Move;
}
else
{
this._state = RPG_Pawn.State.Idle;
}
}
}
this.SetReadyWeaponPose();
if (this.motor)
{
this.motor.desiredFacingDirection = Vector3.zero;
}
}
public bool TryCarryWeapon(int ID)
{
RPG_Weapon rPG_Weapon = this._wc.TryCarryWeapon(ID);
if (rPG_Weapon)
{
this.myWeapon = rPG_Weapon;
switch (rPG_Weapon.TypeOfWeapon)
{
case RPG_Weapon.WeaponType.OneHandBlade:
base.animation[this.SingleAnimations.OneHandWeaponUnequip.name].wrapMode = WrapMode.Once;
base.animation[this.SingleAnimations.OneHandWeaponUnequip.name].layer = 1;
base.animation.CrossFade(this.SingleAnimations.OneHandWeaponUnequip.name, 0.3f);
base.StartCoroutine("CarryWeaponDelay", this.SingleAnimations.PauseOneHandWeaponUnequip);
return true;
case RPG_Weapon.WeaponType.OneHandShoot:
break;
case RPG_Weapon.WeaponType.OneHandCrash:
base.animation[this.SingleAnimations.OneHandWeaponUnequip.name].wrapMode = WrapMode.Once;
base.animation[this.SingleAnimations.OneHandWeaponUnequip.name].layer = 1;
base.animation.CrossFade(this.SingleAnimations.OneHandWeaponUnequip.name, 0.3f);
base.StartCoroutine("CarryWeaponDelay", this.SingleAnimations.PauseOneHandWeaponUnequip);
return true;
case RPG_Weapon.WeaponType.TwoHandsBlade:
base.animation[this.SingleAnimations.OneHandWeaponUnequip.name].wrapMode = WrapMode.Once;
base.animation[this.SingleAnimations.OneHandWeaponUnequip.name].layer = 1;
base.animation.CrossFade(this.SingleAnimations.OneHandWeaponUnequip.name, 0.3f);
base.StartCoroutine("CarryWeaponDelay", this.SingleAnimations.PauseOneHandWeaponUnequip);
return true;
case RPG_Weapon.WeaponType.TwoHandsShoot:
break;
case RPG_Weapon.WeaponType.TwoHandsCrash:
base.animation[this.SingleAnimations.OneHandWeaponUnequip.name].wrapMode = WrapMode.Once;
base.animation[this.SingleAnimations.OneHandWeaponUnequip.name].layer = 1;
base.animation.CrossFade(this.SingleAnimations.OneHandWeaponUnequip.name, 0.3f);
base.StartCoroutine("CarryWeaponDelay", this.SingleAnimations.PauseOneHandWeaponUnequip);
return true;
case RPG_Weapon.WeaponType.Hands:
break;
default:
Debug.LogWarning("тип оружия <" + rPG_Weapon.TypeOfWeapon + "> не обрабатывается");
break;
}
}
return false;
}
[DebuggerHidden]
private IEnumerator CarryWeaponDelay(float delay)
{
RPG_Pawn.<CarryWeaponDelay>c__Iterator1D <CarryWeaponDelay>c__Iterator1D = new RPG_Pawn.<CarryWeaponDelay>c__Iterator1D();
<CarryWeaponDelay>c__Iterator1D.<>f__this = this;
return <CarryWeaponDelay>c__Iterator1D;
}
public RPG_Weapon TryReadyWeapon(int ID)
{
RPG_Weapon rPG_Weapon = this._wc.TryReadyWeapon(ID);
if (rPG_Weapon)
{
this.myWeapon = rPG_Weapon;
switch (rPG_Weapon.TypeOfWeapon)
{
case RPG_Weapon.WeaponType.OneHandBlade:
base.animation[this.SingleAnimations.OneHandWeaponEquip.name].wrapMode = WrapMode.Once;
base.animation[this.SingleAnimations.OneHandWeaponEquip.name].layer = 1;
base.animation.CrossFade(this.SingleAnimations.OneHandWeaponEquip.name, 0.3f);
base.StartCoroutine("ReadyWeaponDelay", this.SingleAnimations.PauseOneHandWeaponEquip);
break;
case RPG_Weapon.WeaponType.OneHandShoot:
break;
case RPG_Weapon.WeaponType.OneHandCrash:
base.animation[this.SingleAnimations.OneHandWeaponEquip.name].wrapMode = WrapMode.Once;
base.animation[this.SingleAnimations.OneHandWeaponEquip.name].layer = 1;
base.animation.CrossFade(this.SingleAnimations.OneHandWeaponEquip.name, 0.3f);
base.StartCoroutine("ReadyWeaponDelay", this.SingleAnimations.PauseOneHandWeaponEquip);
break;
case RPG_Weapon.WeaponType.TwoHandsBlade:
base.animation[this.SingleAnimations.TwoHandsWeaponEquip.name].wrapMode = WrapMode.Once;
base.animation[this.SingleAnimations.TwoHandsWeaponEquip.name].layer = 1;
base.animation.CrossFade(this.SingleAnimations.TwoHandsWeaponEquip.name, 0.3f);
base.StartCoroutine("ReadyWeaponDelay", this.SingleAnimations.PauseTwoHandsWeaponEquip);
break;
case RPG_Weapon.WeaponType.TwoHandsShoot:
break;
case RPG_Weapon.WeaponType.TwoHandsCrash:
base.animation[this.SingleAnimations.TwoHandsWeaponEquip.name].wrapMode = WrapMode.Once;
base.animation[this.SingleAnimations.TwoHandsWeaponEquip.name].layer = 1;
base.animation.CrossFade(this.SingleAnimations.TwoHandsWeaponEquip.name, 0.3f);
base.StartCoroutine("ReadyWeaponDelay", this.SingleAnimations.PauseTwoHandsWeaponEquip);
break;
case RPG_Weapon.WeaponType.Hands:
break;
default:
Debug.LogWarning("тип оружия <" + rPG_Weapon.TypeOfWeapon + "> не обрабатывается");
break;
}
return rPG_Weapon;
}
return null;
}
[DebuggerHidden]
private IEnumerator ReadyWeaponDelay(float delay)
{
RPG_Pawn.<ReadyWeaponDelay>c__Iterator1E <ReadyWeaponDelay>c__Iterator1E = new RPG_Pawn.<ReadyWeaponDelay>c__Iterator1E();
<ReadyWeaponDelay>c__Iterator1E.<>f__this = this;
return <ReadyWeaponDelay>c__Iterator1E;
}
public void DropAllWeapons()
{
this._wc.DropAllWeapons();
}
public void SetCarryWeaponPose()
{
base.animation.CrossFade(this.GroupsLocomotion.NoGunsGroupName, 0.3f);
}
public void SetReadyWeaponPose()
{
switch (this.myWeapon.TypeOfWeapon)
{
case RPG_Weapon.WeaponType.OneHandBlade:
base.animation.CrossFade(this.GroupsLocomotion.OneHandWeaponDownGroupName, 0.3f);
return;
case RPG_Weapon.WeaponType.OneHandShoot:
base.animation.CrossFade(this.GroupsLocomotion.OneHandWeaponDownGroupName, 0.3f);
return;
case RPG_Weapon.WeaponType.TwoHandsBlade:
base.animation.CrossFade(this.GroupsLocomotion.TwoHandsWeaponDownGroupName, 0.3f);
return;
case RPG_Weapon.WeaponType.TwoHandsShoot:
base.animation.CrossFade(this.GroupsLocomotion.TwoHandsWeaponDownGroupName, 0.3f);
return;
case RPG_Weapon.WeaponType.Hands:
base.animation.CrossFade(this.GroupsLocomotion.HandsUpGroupName, 0.3f);
return;
}
Debug.LogWarning("Такой тип не обрабатывается - " + this.myWeapon.TypeOfWeapon);
base.animation.CrossFade(this.GroupsLocomotion.NoGunsGroupName, 0.3f);
}
public void SetFireWeaponPose()
{
bool flag = false;
if (this.motor && this.motor.desiredVelocity.magnitude > 0f)
{
flag = true;
}
this._state = RPG_Pawn.State.Atack;
switch (this.myWeapon.TypeOfWeapon)
{
case RPG_Weapon.WeaponType.OneHandBlade:
{
int num = UnityEngine.Random.Range(0, this.SingleAnimations.OneHandWeaponAtack.Length);
if (flag)
{
base.animation[this.SingleAnimations.OneHandWeaponAtack[num].name].AddMixingTransform(this.TopBodyStartBone);
base.animation[this.SingleAnimations.OneHandWeaponAtack[num].name].layer = 1;
base.animation.CrossFade(this.SingleAnimations.OneHandWeaponAtack[num].name, 0.3f);
base.StartCoroutine("FireAnimationDelay", base.animation[this.SingleAnimations.OneHandWeaponAtack[num].name].length);
}
else
{
base.animation[this.SingleAnimations.OneHandWeaponAtack[num].name].AddMixingTransform(this.RootBone);
base.animation[this.SingleAnimations.OneHandWeaponAtack[num].name].layer = 0;
base.animation.CrossFade(this.SingleAnimations.OneHandWeaponAtack[num].name, 0.3f);
base.StartCoroutine("FireAnimationDelay", base.animation[this.SingleAnimations.OneHandWeaponAtack[num].name].length);
}
return;
}
case RPG_Weapon.WeaponType.OneHandShoot:
base.animation.CrossFade(this.GroupsLocomotion.OneHandWeaponUpGroupName, 0.3f);
return;
case RPG_Weapon.WeaponType.TwoHandsBlade:
{
int num = UnityEngine.Random.Range(0, this.SingleAnimations.OneHandWeaponAtack.Length);
if (flag)
{
base.animation[this.SingleAnimations.TwoHandsWeaponAtack[num].name].AddMixingTransform(this.TopBodyStartBone);
base.animation[this.SingleAnimations.TwoHandsWeaponAtack[num].name].layer = 1;
base.animation.CrossFade(this.SingleAnimations.TwoHandsWeaponAtack[num].name, 0.3f);
base.StartCoroutine("FireAnimationDelay", base.animation[this.SingleAnimations.TwoHandsWeaponAtack[num].name].length);
}
else
{
base.animation[this.SingleAnimations.TwoHandsWeaponAtack[num].name].AddMixingTransform(this.RootBone);
base.animation[this.SingleAnimations.TwoHandsWeaponAtack[num].name].layer = 0;
base.animation.CrossFade(this.SingleAnimations.TwoHandsWeaponAtack[num].name, 0.3f);
base.StartCoroutine("FireAnimationDelay", base.animation[this.SingleAnimations.TwoHandsWeaponAtack[num].name].length);
}
return;
}
case RPG_Weapon.WeaponType.TwoHandsShoot:
base.animation.CrossFade(this.GroupsLocomotion.TwoHandsWeaponUpGroupName, 0.3f);
return;
case RPG_Weapon.WeaponType.Hands:
{
int num = UnityEngine.Random.Range(0, this.SingleAnimations.OneHandWeaponAtack.Length);
if (flag)
{
base.animation[this.SingleAnimations.HandsAtack[num].name].AddMixingTransform(this.TopBodyStartBone);
base.animation[this.SingleAnimations.HandsAtack[num].name].layer = 1;
base.animation.CrossFade(this.SingleAnimations.HandsAtack[num].name, 0.3f);
base.StartCoroutine("FireAnimationDelay", base.animation[this.SingleAnimations.HandsAtack[num].name].length);
}
else
{
base.animation[this.SingleAnimations.HandsAtack[num].name].AddMixingTransform(this.RootBone);
base.animation[this.SingleAnimations.HandsAtack[num].name].layer = 0;
base.animation.CrossFade(this.SingleAnimations.HandsAtack[num].name, 0.3f);
base.StartCoroutine("FireAnimationDelay", base.animation[this.SingleAnimations.HandsAtack[num].name].length);
}
return;
}
}
Debug.LogWarning("Такой тип не обрабатывается - " + this.myWeapon.TypeOfWeapon);
base.animation.CrossFade(this.GroupsLocomotion.NoGunsGroupName, 0.3f);
}
[DebuggerHidden]
private IEnumerator FireAnimationDelay(float delay)
{
RPG_Pawn.<FireAnimationDelay>c__Iterator1F <FireAnimationDelay>c__Iterator1F = new RPG_Pawn.<FireAnimationDelay>c__Iterator1F();
<FireAnimationDelay>c__Iterator1F.delay = delay;
<FireAnimationDelay>c__Iterator1F.<$>delay = delay;
<FireAnimationDelay>c__Iterator1F.<>f__this = this;
return <FireAnimationDelay>c__Iterator1F;
}
public float TryToReloadWeapon()
{
Debug.Log("Pawn - " + this.ActorName + " перезаряжает оружие");
if (!this.myWeapon)
{
return 0f;
}
if (this.SingleAnimations.ReloadOneHandWeapon && this.myWeapon.TypeOfWeapon == RPG_Weapon.WeaponType.OneHandShoot)
{
base.animation.Play(this.SingleAnimations.ReloadOneHandWeapon.name);
return base.animation[this.SingleAnimations.ReloadOneHandWeapon.name].length;
}
if (this.SingleAnimations.ReloadTwoHandsWeapon && this.myWeapon.TypeOfWeapon == RPG_Weapon.WeaponType.TwoHandsShoot)
{
base.animation.Play(this.SingleAnimations.ReloadTwoHandsWeapon.name);
return base.animation[this.SingleAnimations.ReloadTwoHandsWeapon.name].length;
}
return 0f;
}
public void FlashLightOn()
{
Debug.Log("Паун пытается включить фонарик");
if (!this._wc)
{
Debug.LogWarning("нет RPG_WeaponController");
return;
}
this.IsFlashLight = true;
this._wc.FlashLightOn();
}
public void FlashLightOff()
{
Debug.Log("Паун пытается выключить фонарик");
if (!this._wc)
{
Debug.LogWarning("нет RPG_WeaponController");
return;
}
this.IsFlashLight = false;
this._wc.FlashLightOff();
}
public void MoneyExchange(int m)
{
this.Money += m;
}
public void PointsExchange(int p)
{
this.Points += p;
}
public override void TryToUse(RPG_Controller controller)
{
RPG_Base_AI component = base.GetComponent<RPG_Base_AI>();
if (component)
{
RPG_PlayerController component2 = controller.GetComponent<RPG_PlayerController>();
if (component2)
{
if (component.IsEnemy(component2.myPawn))
{
Debug.Log(component2.myPawn.ActorName + " для " + this.ActorName + " ВРАГ - говорить не станет");
return;
}
Debug.Log(component2.myPawn.ActorName + " для " + this.ActorName + " не враг - поговорим");
}
}
this.myController.TryToUseMyPawn(controller);
}
public override bool TryToSelect()
{
RPG_PlayerController pC = RPG_BaseHUD.Instance.PC;
if (!pC)
{
return false;
}
if (Vector3.Distance(pC.transform.position, base.transform.position) <= this.UsingRange)
{
this.SetSelected();
return true;
}
return false;
}
public override void HitMe(RPG_Actor _actor, float D)
{
if (this.GodMode && this.ActorHealth <= D)
{
D = 0f;
}
base.HitMe(_actor, D);
}
}
Возникает ошибка error CS1525: Unexpected symbol `<', expecting `identifier'
Помогите пожалуйста
Сам скрипт
http://rghost.ru/44024565