public void AddCreatureEntity(creature creature) { var guid = new ObjectGUID((ulong)creature.guid, TypeID.TYPEID_UNIT); var creatureEntity = new CreatureEntity(guid, creature, vanillaWorld); CreatureEntities.Add(creatureEntity); creatureEntity.Setup(); }
/// <summary> /// Initializes a new instance of the <see cref="CombatantCreature"/> class. /// </summary> /// <param name="creationMetadata">The metadata for this player.</param> /// <param name="preselectedId">Optional. A pre-selected id to use for the combatant. Picks a new id if none (or 0) is specified.</param> /// <param name="baseAttackSpeed"> /// Optional. The base attack speed for this creature. /// Bounded between [<see cref="CombatConstants.MinimumCombatSpeedFactor"/>, <see cref="CombatConstants.MaximumCombatSpeedFactor"/>] inclusive. /// Defaults to <see cref="CombatConstants.DefaultAttackSpeedFactor"/>. /// </param> /// <param name="baseDefenseSpeed"> /// Optional. The base defense speed for this creature. /// Bounded between [<see cref="CombatConstants.MinimumCombatSpeedFactor"/>, <see cref="CombatConstants.MaximumCombatSpeedFactor"/>] inclusive. /// Defaults to <see cref="CombatConstants.DefaultDefenseSpeedFactor"/>. /// </param> protected CombatantCreature( CreatureEntity creationMetadata, uint preselectedId = 0, decimal baseAttackSpeed = CombatConstants.DefaultAttackSpeedFactor, decimal baseDefenseSpeed = CombatConstants.DefaultDefenseSpeedFactor) : base(creationMetadata, preselectedId) { // Normalize combat speeds. this.baseAttackSpeed = Math.Min(CombatConstants.MaximumCombatSpeedFactor, Math.Max(CombatConstants.MinimumCombatSpeedFactor, baseAttackSpeed)); this.baseDefenseSpeed = Math.Min(CombatConstants.MaximumCombatSpeedFactor, Math.Max(CombatConstants.MinimumCombatSpeedFactor, baseDefenseSpeed)); this.combatSessionDamageTakenMap = new ConcurrentDictionary <uint, uint>(); this.combatSessionAttackedBy = new HashSet <ICombatant>(); this.creatureAwarenessMap = new Dictionary <ICreature, AwarenessLevel>(); this.Skills = new Dictionary <SkillType, ISkill>(); this.Stats.Add(CreatureStat.AttackPoints, new Stat(CreatureStat.AttackPoints, 1, CombatConstants.DefaultMaximumAttackCredits)); this.Stats[CreatureStat.AttackPoints].ValueChanged += this.RaiseStatChange; this.Stats.Add(CreatureStat.DefensePoints, new Stat(CreatureStat.DefensePoints, 2, CombatConstants.DefaultMaximumDefenseCredits)); this.Stats[CreatureStat.DefensePoints].ValueChanged += this.RaiseStatChange; this.StatChanged += (ICreature creature, IStat statThatChanged, uint previousValue, byte previousPercent) => { if (statThatChanged.Type == CreatureStat.HitPoints && statThatChanged.Current == 0) { this.Death?.Invoke(this); } }; }
public TopicEntry GetTopic(CreatureEntity collocutor, int conversationIndex, TopicEntry parentTopic, string phrase) { TopicEntry result = null; DialogEntry dlg = Dialog; ConversationEntry curConvers = dlg.GetConversation(conversationIndex); if (parentTopic == null) { result = curConvers.GetTopic(0); } else { for (int i = 0; i < parentTopic.TopicsCount; i++) { TopicEntry subTopic = parentTopic.GetTopic(i); if ((subTopic.Phrase == phrase)) { result = subTopic; break; } } } return(result); }
public void ApplyEffects(CreatureEntity target, InvokeMode invokeMode, EffectExt extData) { try { ItemEntry.EffectEntry[] effects = fEntry.Effects; if (effects == null) { return; } int num = effects.Length; for (int i = 0; i < num; i++) { ItemEntry.EffectEntry eff = fEntry.Effects[i]; EffectExt ext; if (invokeMode < InvokeMode.im_UseBegin || invokeMode >= InvokeMode.im_ItSelf) { ext = extData; } else { ext = new EffectExt(); ext.SetParam(EffectParams.ep_ItemExt, eff.ExtData); } ((NWCreature)target).UseEffect(eff.EffID, this, invokeMode, ext); } } catch (Exception ex) { Logger.Write("Item.applyEffects(): " + ex.Message); } }
void OnTriggerEnter2D(Collider2D coll) { layer = coll.gameObject.layer; if (layer == ENEMY_WEAPON) { enemyWeapon = coll.GetComponent <Weapon>(); if (!enemyWeapon.alreadyCollided && !levelCompleted && !dead) { if (enemyWeapon.weaponType == Weapon.WeaponType.Hammer || enemyWeapon.weaponType == Weapon.WeaponType.Dagger || enemyWeapon.weaponType == Weapon.WeaponType.MagicProjectile) { enemyWeapon.alreadyCollided = true; SendMessageUpwards("TakesHit", hit.Args(gameObject, coll)); } } } else if (layer == ENEMY_COLLIDER) { enemy = coll.GetComponent <CreatureEntity>(); if (!enemy.alreadyCollided && !levelCompleted && !dead) { if (enemy.entityType == CreatureEntity.EntityType.Enemy) { enemy.alreadyCollided = true; // player.TouchesEnemy("touch", enemy, coll, hitFrom); } } } }
void OnTriggerEnter2D(Collider2D coll) { layer = coll.gameObject.layer; if (layer == ENEMY_WEAPON) { enemyWeapon = coll.GetComponent<Weapon>(); if (!enemyWeapon.alreadyCollided && !levelCompleted && !dead) { if (enemyWeapon.weaponType == Weapon.WeaponType.Hammer || enemyWeapon.weaponType == Weapon.WeaponType.Dagger || enemyWeapon.weaponType == Weapon.WeaponType.MagicProjectile) { enemyWeapon.alreadyCollided = true; SendMessageUpwards("TakesHit", hit.Args(gameObject, coll)); } } } else if (layer == ENEMY_COLLIDER) { enemy = coll.GetComponent<CreatureEntity>(); if (!enemy.alreadyCollided && !levelCompleted && !dead) { if (enemy.entityType == CreatureEntity.EntityType.Enemy) { enemy.alreadyCollided = true; // player.TouchesEnemy("touch", enemy, coll, hitFrom); } } } }
private void AddNewCreature(string selectedHerd, CreatureBuffer newCreature) { var newEntity = new CreatureEntity { Id = CreatureEntity.GenerateNewCreatureId(context), Name = newCreature.Name, Herd = selectedHerd, Age = newCreature.Age, TakenCareOfBy = newCreature.CaredBy, BrandedFor = newCreature.BrandedBy, FatherName = newCreature.FatherName, MotherName = newCreature.MotherName, Traits = newCreature.Traits, TraitsInspectedAtSkill = newCreature.InspectSkill, IsMale = newCreature.IsMale, PregnantUntil = newCreature.PregnantUntil, SecondaryInfoTagSetter = newCreature.SecondaryInfo, ServerName = newCreature.Server != null ? newCreature.Server.ServerName.Original : string.Empty, SmilexamineLastDate = DateTime.Now, CreatureColorId = newCreature.HasColorWurmLogText ? creatureColorDefinitions.GetColorIdByWurmLogText(newCreature.ColorWurmLogText) : CreatureColor.GetDefaultColor().CreatureColorId }; newEntity.EpicCurve = newCreature.Server != null && newCreature.Server.ServerGroup.ServerGroupId == ServerGroup.EpicId; context.InsertCreature(newEntity); debugLogger.Log("successfully inserted creature to db"); trayPopups.Schedule(String.Format("Added new creature to herd {0}: {1}", selectedHerd, newEntity), "CREATURE ADDED"); }
public PSCreatureQueryResponse(uint entry, CreatureEntity entity) : base(WorldOpcodes.SMSG_CREATURE_QUERY_RESPONSE) { this.Write(entry); this.WriteCString(entity.Name); this.WriteNullByte(3); // Name2,3,4 if (entity.Template.SubName == "\\N") { this.WriteNullByte(1); } else { this.WriteCString(entity.Template.SubName); } this.Write((UInt32)entity.Template.CreatureTypeFlags); this.Write((UInt32)entity.Template.CreatureType); this.Write((UInt32)entity.Template.Family); this.Write((UInt32)entity.Template.Rank); this.WriteNullUInt(1); this.Write((UInt32)entity.Template.PetSpellDataId); this.Write((UInt32)entity.Creature.modelid); this.Write((UInt16)entity.Template.Civilian); }
public void SetEscortGoal(CreatureEntity leader, bool isParty) { EscortGoal goal = (EscortGoal)CreateGoal(GoalKind.gk_Escort); goal.Leader = leader; goal.NotParty = !isParty; }
IEnumerable <XElement> GetTraitListXML(CreatureEntity creatureEntity) { var result = new List <XElement>(); foreach (var trait in creatureEntity.Traits) { result.Add(new XElement("Trait", new XAttribute("TraitId", (int)trait.CreatureTraitId), trait.ToString())); } return(result); }
public bool AddMember(CreatureEntity member) { bool result = false; if (member != null && fList.Count < 10 && IndexOfMember(member) < 0) { fList.Add(member); result = true; } return(result); }
string GetGender(CreatureEntity creatureEntity) { if (creatureEntity.IsMale == null) { return(string.Empty); } else { return(creatureEntity.IsMale.Value ? "male" : "female"); } }
public bool RemoveMember(CreatureEntity member) { bool result = false; if (member != null) { fList.Remove(member); result = true; } return(result); }
protected virtual void PrepareChase(CreatureEntity enemy, AttackRisk risk, bool canMove) { EnemyChaseGoal chaseGoal = (EnemyChaseGoal)FindGoalByKind(GoalKind.gk_EnemyChase); if (chaseGoal == null || !chaseGoal.Enemy.Equals(enemy)) { chaseGoal = ((EnemyChaseGoal)CreateGoal(GoalKind.gk_EnemyChase)); chaseGoal.Enemy = enemy; chaseGoal.Risk = risk; chaseGoal.CanMove = canMove; } }
protected virtual void PrepareEvade(CreatureEntity enemy, AttackRisk risk, bool canMove) { EnemyEvadeGoal evadeGoal = (EnemyEvadeGoal)FindGoalByKind(GoalKind.gk_EnemyEvade); if (evadeGoal == null || !evadeGoal.Enemy.Equals(enemy)) { evadeGoal = ((EnemyEvadeGoal)CreateGoal(GoalKind.gk_EnemyEvade)); evadeGoal.Enemy = enemy; evadeGoal.Risk = risk; evadeGoal.CanMove = canMove; } }
public void ClearMercenaries() { if (fBrain is LeaderBrain) { LeaderBrain leader = ((LeaderBrain)fBrain); for (int i = leader.Members.Count - 1; i >= 1; i--) { CreatureEntity member = leader.Members[i]; ((NWCreature)member).IsMercenary = false; } } }
public LeaderBrain(CreatureEntity owner) : base(owner) { fDir = Directions.DtNone; fList = new ExtList <CreatureEntity>(); Formation = PartyFormation.pfWedge; AddMember(owner); fOffsets = new PMPos[PartyMax + 1]; for (int i = 0; i <= PartyMax; i++) { fOffsets[i] = new PMPos(); } }
public void TouchesEnemy(string weaponType, CreatureEntity enemy, Collider2D coll, int hitFrom) { player.HP -= (int)(enemy.touchDamage * diffDamageModifier); EventKit.Broadcast <int>("reduce hp", player.HP); if (player.HP > 0) { MFX.FadeToColorAndBack(spriteRenderer, MCLR.bloodRed, 0f, .2f); } else { EventKit.Broadcast <int, Weapon.WeaponType>("player dead", hitFrom, Weapon.WeaponType.Struckdown); } }
public void TouchesEnemy(string weaponType, CreatureEntity enemy, Collider2D coll, int hitFrom) { player.HP -= (int)(enemy.touchDamage * game.dDamageMod); EventKit.Broadcast<int>("reduce hp", player.HP); if (player.HP > 0) { MFX.FadeToColorAndBack(spriteRenderer, MCLR.bloodRed, 0f, .2f); } else { EventKit.Broadcast<int, Weapon.WeaponType>("player dead", hitFrom, Weapon.WeaponType.Struckdown); } }
public Creature( FormGrangerMain mainForm, CreatureEntity entity, GrangerContext context, [NotNull] CreatureColorDefinitions creatureColorDefinitions) { if (creatureColorDefinitions == null) { throw new ArgumentNullException(nameof(creatureColorDefinitions)); } BreedHintColor = null; this.mainForm = mainForm; Entity = entity; this.context = context; this.creatureColorDefinitions = creatureColorDefinitions; }
public void TouchesEnemy(string weaponType, CreatureEntity enemy, Collider2D coll, int hitFrom) { // calculate damage player.HP -= (int)(enemy.touchDamage * DIFFICULTY_DAMAGE_MODIFIER); // produce effects Messenger.Broadcast<int>("reduce hp", player.HP); if (player.HP > 0) { MFX.FadeToColorAndBack(spriteRenderer, MCLR.bloodRed, 0f, .2f); } else { Messenger.Broadcast<string, Collider2D, int>("player dead", "struckdown", coll, hitFrom); } }
void OnTriggerExit2D(Collider2D coll) { layer = coll.gameObject.layer; if (layer == ENEMY_WEAPON) { enemyWeapon = coll.GetComponent<Weapon>(); enemyWeapon.alreadyCollided = false; } else if (layer == ENEMY_COLLIDER) { enemy = coll.GetComponent<CreatureEntity>(); enemy.alreadyCollided = false; } }
void OnTriggerExit2D(Collider2D coll) { layer = coll.gameObject.layer; if (layer == ENEMY_WEAPON_COLLIDER) { enemyWeapon = coll.GetComponent <Weapon>() ?? coll.GetComponentInParent <ProjectileContainer>().weapon; enemyWeapon.alreadyCollided = false; } else if (layer == ENEMY_BODY_COLLIDER) { enemy = coll.GetComponent <CreatureEntity>(); enemy.alreadyCollided = false; } }
public AiBrain(CreatureEntity entity) { this.entity = entity; var moveTemplates = CreatureMovementTemplates.Where(ways => ways.entry == entity.Template.Entry).ToList(); if (moveTemplates.Count != 0) { moveTemplates.ForEach(way => waypoints.Add(new Waypoint() { PointIndex = way.point, Point = new Vector3(way.position_x, way.position_y, way.position_z) })); } else { var creatureMovements = CreatureMovements.Where(ways => ways.id == entity.Creature.id).ToList(); creatureMovements.ForEach(way => waypoints.Add(new Waypoint() { PointIndex = way.point, Point = new Vector3(way.position_x, way.position_y, way.position_z) })); } SetNextWaypoint(); }
void OnTriggerExit2D(Collider2D coll) { layer = coll.gameObject.layer; if (layer == ENEMY_WEAPON) { enemyWeapon = coll.GetComponent <Weapon>(); enemyWeapon.alreadyCollided = false; } else if (layer == ENEMY_COLLIDER) { enemy = coll.GetComponent <CreatureEntity>(); enemy.alreadyCollided = false; } }
public void TouchesEnemy(string weaponType, CreatureEntity enemy, Collider2D coll, int hitFrom) { // calculate damage player.HP -= (int)(enemy.touchDamage * DIFFICULTY_DAMAGE_MODIFIER); // produce effects Messenger.Broadcast <int>("reduce hp", player.HP); if (player.HP > 0) { MFX.FadeToColorAndBack(spriteRenderer, MCLR.bloodRed, 0f, .2f); } else { Messenger.Broadcast <string, Collider2D, int>("player dead", "struckdown", coll, hitFrom); } }
void OnTriggerExit2D(Collider2D coll) { // check for layer instead of name — it's much quicker layer = coll.gameObject.layer; if (layer == ENEMY_WEAPON) { enemyWeapon = coll.GetComponent<Weapon>(); enemyWeapon.alreadyCollided = false; } else if (layer == ENEMY_COLLIDER) { enemy = coll.GetComponent<CreatureEntity>(); enemy.alreadyCollided = false; } }
public override float GetPathTileCost(CreatureEntity creature, int tx, int ty, BaseTile tile) { bool barrier; if (creature == null) { barrier = IsBarrier(tx, ty); } else { barrier = !creature.CanMove(this, tx, ty); if (!barrier && creature.IsSeen(tx, ty, false)) { barrier = (FindCreature(tx, ty) != null); } } return(barrier ? PathSearch.BARRIER_COST : 1.0f); }
public PSMonsterMove(CreatureEntity target, List<Vector3> path) : base(WorldOpcodes.SMSG_MONSTER_MOVE) { this.WritePackedUInt64(target.ObjectGUID.RawGUID); this.Write(target.Location.X); this.Write(target.Location.Y); this.Write(target.Location.Z); this.Write((UInt32)Environment.TickCount); this.Write((byte)0); // SPLINETYPE_NORMAL this.Write(0); // sPLINE FLAG var time = this.GetDistanceForPath(target.Location.Position, path) / UnitSpeed.UNIT_NORMAL_RUN_SPEED * 1000; this.Write((int)time); // TIME this.Write(path.Count);//count for (int i = 0; i < path.Count; i++) { this.Write(path[i].X); this.Write(path[i].Y); this.Write(path[i].Z); } }
public PSMonsterMove(CreatureEntity target, List <Vector3> path) : base(WorldOpcodes.SMSG_MONSTER_MOVE) { this.WritePackedUInt64(target.ObjectGUID.RawGUID); this.Write(target.Location.X); this.Write(target.Location.Y); this.Write(target.Location.Z); this.Write((UInt32)Environment.TickCount); this.Write((byte)0); // SPLINETYPE_NORMAL this.Write(0); // sPLINE FLAG var time = this.GetDistanceForPath(target.Location.Position, path) / UnitSpeed.UNIT_NORMAL_RUN_SPEED * 1000; this.Write((int)time); // TIME this.Write(path.Count); //count for (int i = 0; i < path.Count; i++) { this.Write(path[i].X); this.Write(path[i].Y); this.Write(path[i].Z); } }
/// <summary> /// Initializes a new instance of the <see cref="Creature"/> class. /// </summary> /// <param name="creationMetadata">The metadata for this player.</param> protected Creature(CreatureEntity creationMetadata) { creationMetadata.ThrowIfNull(nameof(creationMetadata)); creationMetadata.Name.ThrowIfNullOrWhiteSpace(nameof(creationMetadata.Name)); if (creationMetadata.MaxHitpoints == 0) { throw new ArgumentException($"{nameof(creationMetadata.MaxHitpoints)} must be positive.", nameof(creationMetadata.MaxHitpoints)); } lock (Creature.IdLock) { this.Id = idCounter++; } this.Name = creationMetadata.Name; this.Article = creationMetadata.Article; this.CorpseTypeId = creationMetadata.Corpse; this.LastMovementCostModifier = 1; this.Outfit = new Outfit { Id = 0, ItemIdLookAlike = 0, }; this.Stats = new Dictionary <CreatureStat, IStat>(); this.creatureAwarenessMap = new Dictionary <ICreature, AwarenessLevel>(); this.Stats.Add(CreatureStat.HitPoints, new Stat(CreatureStat.HitPoints, creationMetadata.CurrentHitpoints == default ? creationMetadata.MaxHitpoints : creationMetadata.CurrentHitpoints, creationMetadata.MaxHitpoints)); this.Stats[CreatureStat.HitPoints].Changed += this.RaiseStatChange; this.Stats.Add(CreatureStat.CarryStrength, new Stat(CreatureStat.CarryStrength, 150, CreatureConstants.MaxCreatureCarryStrength)); this.Stats[CreatureStat.CarryStrength].Changed += this.RaiseStatChange; this.Stats.Add(CreatureStat.BaseSpeed, new Stat(CreatureStat.BaseSpeed, 70, CreatureConstants.MaxCreatureSpeed)); this.Stats[CreatureStat.BaseSpeed].Changed += this.RaiseStatChange; }
void OnTriggerEnter2D(Collider2D coll) { // check for layer instead of name — it's much quicker layer = coll.gameObject.layer; if (layer == ENEMY_WEAPON) { enemyWeapon = coll.GetComponent<Weapon>(); if (!enemyWeapon.alreadyCollided && !game.LevelLoading && !state.Dead) { hitFrom = MLib.HorizSideThatWasHit(gameObject, coll); if (enemyWeapon.weaponType == Weapon.WeaponType.Hammer || enemyWeapon.weaponType == Weapon.WeaponType.Dagger || enemyWeapon.weaponType == Weapon.WeaponType.MagicProjectile) { enemyWeapon.alreadyCollided = true; player.TakesHit("projectile", enemyWeapon, coll, hitFrom); } } } else if (layer == ENEMY_COLLIDER) { enemy = coll.GetComponent<CreatureEntity>(); if (!enemy.alreadyCollided && !game.LevelLoading && !state.Dead) { hitFrom = MLib.HorizSideThatWasHit(gameObject, coll); if (enemy.entityType == CreatureEntity.EntityType.Enemy) { enemy.alreadyCollided = true; player.TouchesEnemy("touch", enemy, coll, hitFrom); } } } }
void OnTriggerEnter2D(Collider2D coll) { layer = coll.gameObject.layer; if (layer == ENEMY_WEAPON) { enemyWeapon = coll.GetComponent <Weapon>(); if (!enemyWeapon.alreadyCollided && !game.LevelLoading && !state.Dead) { hitFrom = M.HorizSideThatWasHit(gameObject, coll); if (enemyWeapon.weaponType == Weapon.WeaponType.Hammer || enemyWeapon.weaponType == Weapon.WeaponType.Dagger || enemyWeapon.weaponType == Weapon.WeaponType.MagicProjectile) { enemyWeapon.alreadyCollided = true; player.TakesHit("projectile", enemyWeapon, coll, hitFrom); } } } else if (layer == ENEMY_COLLIDER) { enemy = coll.GetComponent <CreatureEntity>(); if (!enemy.alreadyCollided && !game.LevelLoading && !state.Dead) { hitFrom = M.HorizSideThatWasHit(gameObject, coll); if (enemy.entityType == CreatureEntity.EntityType.Enemy) { enemy.alreadyCollided = true; // player.TouchesEnemy("touch", enemy, coll, hitFrom); } } } }
private void PrepareFlock() { try { IsLeader = true; Kinsfolks.Clear(); NWCreature self = (NWCreature)fSelf; NWField fld = self.CurrentField; fNearKinsfolk = null; fNearKinsfolkDist = AuxUtils.MaxInt; int num = fld.Creatures.Count; for (int i = 0; i < num; i++) { NWCreature cr = fld.Creatures.GetItem(i); int dist = MathHelper.Distance(cr.Location, self.Location); if (!cr.Equals(self) && dist <= self.Survey && cr.CLSID == self.CLSID && fld.LineOfSight(self.PosX, self.PosY, cr.PosX, cr.PosY)) { Kinsfolks.Add(cr); if (fNearKinsfolkDist > dist) { fNearKinsfolkDist = dist; fNearKinsfolk = cr; } IsLeader = (IsLeader && self.Leadership > cr.Leadership); } } if (FindGoalByKind(GoalKind.gk_Flock) == null) { GoalEntity goal = CreateGoal(GoalKind.gk_Flock); goal.Duration = 25; } } catch (Exception ex) { Logger.Write("BeastBrain.prepareFlock(): " + ex.Message); } }
private void ExtractBreedingPairCreature(string fixedName, CreatureEntity[] creatures) { if (creatures.Length == 1) { CreatureEntity creature = creatures[0]; if (creature.IsMale ?? false) { lastBreedingMale = creature; } else { lastBreedingFemale = creature; } } else { string title = null; string message = null; if (creatures.Length > 1) { message = (SearchEntireDb ? "Database has" : "Selected herds have") + " more than one creature named: " + fixedName; } else if (creatures.Length == 0) { message = "Not a creature or " + (SearchEntireDb ? "" : "selected") + " herds don't have a creature named: " + fixedName; } if (message != null) { ScheduleTrayPopup(message, title ?? "BREED UPDATE PROBLEM", 6000, forceShow: true); } } }
public override void LoadFromStream(BinaryReader stream, FileVersion version) { try { fID = (BuildingID)StreamUtils.ReadInt(stream); Area = StreamUtils.ReadRect(stream); Doors.Clear(); sbyte count = (sbyte)StreamUtils.ReadByte(stream); for (int i = 0; i < count; i++) { int dx = StreamUtils.ReadInt(stream); int dy = StreamUtils.ReadInt(stream); int dir = StreamUtils.ReadByte(stream); DoorState st = (DoorState)StreamUtils.ReadByte(stream); AddDoor(dx, dy, dir, st); } int idx = StreamUtils.ReadInt(stream); Holder = ((idx == -1) ? null : (CreatureEntity)((NWField)Owner).Creatures.GetItem(idx)); } catch (Exception ex) { Logger.Write("Building.loadFromStream(): " + ex.Message); throw ex; } }
public int GetTradePrice(CreatureEntity aBuyer, CreatureEntity aSeller) { int result = Price; NWCreature buyer = (NWCreature)((aBuyer is NWCreature) ? aBuyer : null); NWCreature seller = (NWCreature)((aSeller is NWCreature) ? aSeller : null); if (buyer != null && seller != null) { if (seller.IsTrader) { result = (int)Math.Round((result * 1.2)); } else { if (buyer.IsTrader) { result = (int)((int)((uint)result >> 1)); } } } return(result); }
public CreaturePacketBuilder(CreatureEntity entity) { this.entity = entity; }
public TraderBrain(CreatureEntity owner) : base(owner) { }