public void KillSoldier(DamageInfo dmg) { BroadcastMessage("KillYourself", SendMessageOptions.DontRequireReceiver); if (owner_FightInReg != null && shouldDecreaseCountOfOwnerFightInRegOnDeath) { owner_FightInReg.DecreaseCountOfCreatedSoldiers_ForCountRespawnStyle(); } charInfo.IsDead = true; mapLogic.RemoveChar(gameObject); DeadSoldAnim dsAnim = GetDeadSoldAnimForAnim(mainAnim, dmg); DeadSoldInitialInfo dsInitialInfo = new DeadSoldInitialInfo(); dsInitialInfo.damageInfo = dmg; dsInitialInfo.curRunningSoldAnim = mainAnim; dsInitialInfo.curRunningSoldAnimTime = bodyInfo.animation[mainAnim].time; dsInitialInfo.curRunningSoldAnimTime = 0; dsInitialInfo.deadSoldAnim = dsAnim; dsInitialInfo.initialPos = transform.position; dsInitialInfo.initialRot = transform.rotation; dsInitialInfo.offset = body.transform.localPosition; dsInitialInfo.voiceInfo = voiceInfo; if ((dmg.damageType != DamageType.Explosion) && (Random.Range(0f, 0.9999f) < soldierGeneralInfo.DieAnimChance) && (deadSoldier != null) && (dsAnim != null)) { DeadSoldier newDeadSoldier = Instantiate(deadSoldier, transform.position, transform.rotation) as DeadSoldier; newDeadSoldier.StartThisZombie(dsInitialInfo); //if(isMoving) } else { SoldierBodyInfo sBInfo = gameObject.GetComponentInChildren <SoldierBodyInfo>(); Transform solBody = sBInfo.gameObject.transform; solBody.parent = null; RagdollCreator rdCreator = solBody.GetComponent <RagdollCreator>(); rdCreator.MakeRagdoll(dmg, dsInitialInfo, true); } Destroy(gameObject); }
DeadSoldAnim GetDeadSoldAnimForAnim(string _curRunningAnim, DamageInfo _damageInfo) { DeadSoldAnim deadSoldAn = null; string curRunningAnim = _curRunningAnim; DamageInfo damageInfo = _damageInfo; DeadSoldEquivAnimInfo deadAnimEquivInfo = FindDeadAnimEquivInfoForCurRunningAnim(curRunningAnim, damageInfo); if (deadAnimEquivInfo != null) { deadSoldAn = new DeadSoldAnim(); deadSoldAn.animName = deadAnimEquivInfo.deadSoldierAnimsList.GetRandomAnimName(); deadSoldAn.initialCrossfadeTime = deadAnimEquivInfo.crossfadeTime; return(deadSoldAn); } return(null); }