Aura.Channel.Skills.Life.Campfire.Complete C# (CSharp) Метод

Complete() публичный Метод

Completes skill, placing the campfire.
public Complete ( Creature creature, Skill skill, Packet packet ) : void
creature Aura.Channel.World.Entities.Creature
skill Skill
packet Packet
Результат void
		public void Complete(Creature creature, Skill skill, Packet packet)
		{
			var positionId = packet.GetLong();
			var unkInt1 = packet.GetInt();
			var unkInt2 = packet.GetInt();
			var propId = PropId;

			// Check location
			var pos = new Position(positionId);
			var validLocation = IsValidRegion(creature.Region) && IsValidPosition(creature, pos);

			if (validLocation)
			{
				// Handle items
				if (skill.Info.Id == SkillId.Campfire)
				{
					// Check Firewood, the client should stop the player long before Complete.
					if (creature.Inventory.Count(creature.Temp.FirewoodItemId) < FirewoodCost)
						throw new ModerateViolation("Used Campfire without Firewood.");

					// Remove Firewood
					creature.Inventory.Remove(creature.Temp.FirewoodItemId, FirewoodCost);
				}
				else
				{
					// Check kit
					var item = creature.Inventory.GetItem(creature.Temp.CampfireKitItemEntityId);
					if (item == null)
						throw new ModerateViolation("Used CampfireKit with invalid kit.");

					propId = this.GetPropId(item); // Change the prop ID based on what campfire kit was used

					// Reduce kit
					creature.Inventory.Decrement(item);
				}

				// Set up Campfire
				var effect = (skill.Info.Rank < SkillRank.RB ? "campfire_01" : "campfire_02");
				var prop = new Prop(propId, creature.RegionId, pos.X, pos.Y, MabiMath.ByteToRadian(creature.Direction), 1); // Logs
				prop.State = "single";
				if (prop.Data.Id != HalloweenPropId)
					prop.Xml.SetAttributeValue("EFFECT", effect); // Fire effect
				prop.DisappearTime = DateTime.Now.AddMinutes(this.GetDuration(skill.Info.Rank, creature.RegionId)); // Disappear after x minutes

				// Temp data for Rest
				prop.Temp.CampfireSkillRank = skill.RankData;
				if (skill.Info.Id == SkillId.Campfire)
					prop.Temp.CampfireFirewood = AuraData.ItemDb.Find(creature.Temp.FirewoodItemId);

				creature.Region.AddProp(prop);

				// Training
				if (skill.Info.Id == SkillId.Campfire && skill.Info.Rank == SkillRank.Novice)
					skill.Train(1); // Use Campfire.
			}

			// Complete
			Send.SkillComplete(creature, skill.Info.Id, positionId, unkInt1, unkInt2);
		}