public override float GetSpawnRate() { ShTerritory territory = player.svPlayer.GetTerritory; if (territory && territory.ownerIndex == info.shared.jobIndex) { return((territory.attackerIndex == Util.InvalidByte) ? info.spawnRate : 1f); } return(0f); }
public override void OnDestroyEntity(ShEntity entity) { base.OnDestroyEntity(entity); if (entity is ShPlayer victim) { if (!svManager.gangWar) { if (player.isHuman && victim.svPlayer.job is Gangster && this != victim.svPlayer.job) { ShTerritory t; if (gangstersKilled >= 1 && (t = player.svPlayer.GetTerritory) && t.ownerIndex != info.shared.jobIndex) { t.svTerritory.StartGangWar(info.shared.jobIndex); gangstersKilled = 0; } else { gangstersKilled++; } player.svPlayer.Reward(2, 50); } } else if (victim.svPlayer.job is Gangster) { ShTerritory t = player.svPlayer.GetTerritory; if (t && t.attackerIndex != Util.InvalidByte) { if (victim.svPlayer.job.info.shared.jobIndex == t.ownerIndex) { t.svTerritory.defendersKilled++; t.svTerritory.SendTerritoryStats(); player.svPlayer.Reward(3, 100); } else if (victim.svPlayer.job.info.shared.jobIndex == t.attackerIndex) { t.svTerritory.attackersKilled++; t.svTerritory.SendTerritoryStats(); player.svPlayer.Reward(3, 100); } } } } }
public override void ResetJobAI() { ShPlayer target = player.svPlayer.spawner; if (target && target.IsOutside && target.svPlayer.job is Gangster && target.svPlayer.job != this && player.DistanceSqr(target) <= Util.visibleRangeSqr) { ShTerritory territory = target.svPlayer.GetTerritory; if (territory && territory.ownerIndex == info.shared.jobIndex && territory.attackerIndex != Util.InvalidByte) { player.svPlayer.targetEntity = target; if (player.svPlayer.SetState(StateIndex.Attack)) { return; } } } base.ResetJobAI(); }