public override bool FromStream(Stream mstream, short ParsingRule, ThingDb.Thing thing) { byte[] tmp = new byte[4]; mstream.Read(tmp, 0, 4); SpellId = BitConverter.ToInt32(tmp, 0); return(true); }
/// <summary> /// Returns default XFer value for specified monster /// </summary> public void InitForMonsterName(string monsterID) { ThingDb.Thing tt = ThingDb.Things[monsterID]; bool isShopkeeper = tt.Subclass[(int)ThingDb.Thing.SubclassBitIndex.SHOPKEEPER]; bool isFemaleNPC = tt.Subclass[(int)ThingDb.Thing.SubclassBitIndex.FEMALE_NPC]; bool isWoundNPC = tt.Subclass[(int)ThingDb.Thing.SubclassBitIndex.WOUNDED_NPC]; bool isFriendly = isShopkeeper || isFemaleNPC || isWoundNPC || (tt.Name == "AirshipCaptain"); InitDefault(); if (!isFriendly) { Aggressiveness = 0.83F; } if (isShopkeeper) { ShopkeeperInfo.ShopkeeperGreetingText = ""; ShopkeeperInfo.ShopItems = new MonsterXfer.ShopItemInfo[0]; } if (isFemaleNPC) { for (int i = 0; i < 6; i++) { MaidenBodyColors[i] = Color.FromArgb(0xD2, 0xAE, 0x79); } } WoundedNPCVoiceSet = monsterID; if (MonsterDb.MonsterDict.ContainsKey(monsterID)) { MonsterDb.MonsterInfo info = MonsterDb.MonsterDict[monsterID]; //StatusFlags = gui.StatusCheckList.GetFlagsFromString(info.Status); Health = (short)info.Health; RetreatRatio = info.RetreatRatio; ResumeRatio = info.ResumeRatio; } }
public override bool FromStream(Stream mstream, short ParsingRule, ThingDb.Thing thing) { NoxBinaryReader br = new NoxBinaryReader(mstream); // 4 enchantments for (int i = 0; i < 4; i++) { Enchantments[i] = br.ReadString(); } if (ParsingRule > 41) { if (ParsingRule >= 42) { Durability = br.ReadInt16(); } if (ParsingRule == 61) { br.ReadByte(); } if (ParsingRule >= 62) { Unknown = br.ReadInt32(); } } return(true); }
public override void WriteToStream(Stream mstream, short ParsingRule, ThingDb.Thing thing) { NoxBinaryWriter bw = new NoxBinaryWriter(mstream, CryptApi.NoxCryptFormat.NONE); bw.Write(NumOfColors); bw.Write(LightIntensity); bw.Write(LightRadius); bw.Write(UnknownVal); bw.Write(Unknown2); bw.Write(Unknown3); bw.Write(Unknown4); bw.Write(Unknown5); bw.Write(Unknown6); for (int i = 0; i < 16; i++) { bw.WriteColor(ChangeColors[i]); } for (int i = 0; i < 16; i++) { bw.Write(ChangeIntensity[i]); } for (int i = 0; i < 16; i++) { bw.Write(ChangeRadius[i]); } bw.Write(ColorChangeIndex); bw.Write(IntensityChangeIndex); bw.Write(RadiusChangeIndex); bw.Write(ObjExtentID); bw.Write(Unknown13); bw.Write(Unknown14); bw.Write(Unknown15); bw.Write(IsAntiLight); }
public override void WriteToStream(Stream mstream, short ParsingRule, ThingDb.Thing thing) { NoxBinaryWriter bw = new NoxBinaryWriter(mstream, CryptApi.NoxCryptFormat.NONE); bw.Write((uint)RewardType); bw.Write(Unknown1); bw.Write((short)Spells.Count); foreach (string spell in Spells) { bw.Write(spell); } bw.Write((short)Abilities.Count); foreach (string ability in Abilities) { bw.Write(ability); } bw.Write((short)Monsters.Count); foreach (string scroll in Monsters) { bw.Write(scroll); } bw.Write(Unknown2); bw.Write(Unknown3); bw.Write(Unknown4); bw.Write(Unknown5); bw.Write(Unknown6); bw.Write(ActivateChance); bw.Write(RareOrSpecial); }
public override void WriteToStream(Stream mstream, short ParsingRule, ThingDb.Thing thing) { NoxBinaryWriter bw = new NoxBinaryWriter(mstream, CryptApi.NoxCryptFormat.NONE); for (int i = 0; i < 4; i++) { bw.Write(Enchantments[i]); } if (thing.HasClassFlag(ThingDb.Thing.ClassFlags.WAND) && !thing.Subclass[(int)ThingDb.Thing.SubclassBitIndex.STAFF]) { bw.Write(WandChargesCurrent); bw.Write(WandChargesLimit); float recalculated = (float)(WandChargesCurrent / WandChargesLimit) * 100f; bw.Write((int)recalculated); } bw.Write(Durability); if (ParsingRule == 63) { bw.Write((byte)0); } if (ParsingRule >= 64) { bw.Write(Unknown); } }
public override void WriteToStream(Stream mstream, short ParsingRule, ThingDb.Thing thing) { BinaryWriter bw = new BinaryWriter(mstream); bw.Write(ManaPool); bw.Write(Unused); }
public override bool FromStream(Stream mstream, short ParsingRule, ThingDb.Thing thing) { NoxBinaryReader br = new NoxBinaryReader(mstream); AbilityName = br.ReadString(); return(true); }
void ItemsListBoxSelectedIndexChanged(object sender, EventArgs e) { object selected = itemsListBox.SelectedItem; if (selected != null) { MonsterXfer.ShopItemInfo item = (MonsterXfer.ShopItemInfo)selected; objectID.Text = item.Name; objCount.Value = item.Count; DisableTextboxes(); if (ThingDb.Things.ContainsKey(item.Name)) { ThingDb.Thing tt = ThingDb.Things[item.Name]; // FieldGuide/SpellBook/etc if (tt.HasClassFlag(ThingDb.Thing.ClassFlags.INFO_BOOK)) { spellID.Text = item.SpellID; spellID.Enabled = true; } // броня/оружие if (tt.Init == "ModifierInit") { enchant1.Text = item.Ench1; enchant2.Text = item.Ench2; enchant3.Text = item.Ench3; enchant4.Text = item.Ench4; enchant1.Enabled = true; enchant2.Enabled = true; enchant3.Enabled = true; enchant4.Enabled = true; } } } }
public int Compare(Map.Object a, Map.Object b) { ThingDb.Thing tt1 = ThingDb.Things[a.Name]; ThingDb.Thing tt2 = ThingDb.Things[b.Name]; int y = (int)((a.Location.Y + tt1.Z) - (b.Location.Y + tt2.Z)); return(y); }
public override void WriteToStream(Stream mstream, short ParsingRule, ThingDb.Thing thing) { BinaryWriter bw = new BinaryWriter(mstream); bw.Write((int)Direction); bw.Write((int)LockType); bw.Write((int)Direction); }
public override void WriteToStream(Stream mstream, short ParsingRule, ThingDb.Thing thing) { byte[] result = new byte[AbilityName.Length + 1]; result[0] = (byte)AbilityName.Length; byte[] str = Encoding.ASCII.GetBytes(AbilityName); Array.Copy(str, 0, result, 1, str.Length); mstream.Write(result, 0, result.Length); }
public override void WriteToStream(Stream mstream, short ParsingRule, ThingDb.Thing thing) { BinaryWriter bw = new BinaryWriter(mstream); bw.Write(BasePosRadian); bw.Write(RotateSpeed); bw.Write(CurrentPosRadian); }
public override bool FromStream(Stream mstream, short ParsingRule, ThingDb.Thing thing) { BinaryReader rdr = new BinaryReader(mstream); rdr.ReadInt32(); // current direction LockType = (DOORS_LOCK)rdr.ReadInt32(); Direction = (DOORS_DIR)rdr.ReadInt32(); return(true); }
public override void WriteToStream(Stream mstream, short ParsingRule, ThingDb.Thing thing) { NoxBinaryWriter bw = new NoxBinaryWriter(mstream, CryptApi.NoxCryptFormat.NONE); for (int i = 0; i < 4; i++) { bw.Write(Enchantments[i]); } }
private void OutputFormData() { Xfer.DirectionId = (byte)Array.IndexOf(MonsterXfer.NOX_DIRECT_NAMES, (string)directionSelector.SelectedItem); Xfer.ActionRoamPathFlag = byte.Parse(wpFlagBox.Text, NumberStyles.HexNumber); Xfer.HealthMultiplier = float.Parse(healthMultiplier.Text, numberFormat); Xfer.StatusFlags = statusFlagsList.GetCheckedFlags(); Xfer.RetreatRatio = float.Parse(retreatHpC.Text, numberFormat); Xfer.ResumeRatio = float.Parse(resumeHpC.Text, numberFormat); Xfer.SightRange = float.Parse(sightRange.Text, numberFormat); Xfer.Aggressiveness = float.Parse(aggressiveness.Text, numberFormat); if (defaultAction.SelectedIndex >= 0) { Xfer.DefaultAction = defaultAction.SelectedIndex; } Xfer.KnownSpells.Clear(); foreach (MonsterXfer.SpellEntry se in customSpellSet.Items) { Xfer.KnownSpells.Add(se); } Xfer.ReactionCastingDelayMin = (ushort)delayReactionMin.Value; Xfer.ReactionCastingDelayMax = (ushort)delayReactionMax.Value; Xfer.BuffCastingDelayMin = (ushort)delayBuffMin.Value; Xfer.BuffCastingDelayMax = (ushort)delayBuffMax.Value; Xfer.OffensiveCastingDelayMin = (ushort)delayOffensiveMin.Value; Xfer.OffensiveCastingDelayMax = (ushort)delayOffensiveMax.Value; Xfer.DebuffCastingDelayMin = (ushort)delayOffensive2Min.Value; Xfer.DebuffCastingDelayMax = (ushort)delayOffensive2Max.Value; Xfer.BlinkCastingDelayMin = (ushort)delayEscapeMin.Value; Xfer.BlinkCastingDelayMax = (ushort)delayEscapeMax.Value; Xfer.LockPathDistance = float.Parse(pathLockDist.Text, numberFormat); Xfer.SpellPowerLevel = (int)spellPower.Value; Xfer.AimSkillLevel = float.Parse(aimAccuracy.Text, numberFormat); Xfer.Immortal = immortal.Checked; Xfer.Health = short.Parse(health.Text); Xfer.SetDefaultResumeRatio = defaultResumeR.Checked; Xfer.SetDefaultRetreatRatio = defaultRetreatR.Checked; Xfer.SetDefaultMonsterStatus = defaultSF.Checked; Xfer.LearnDefaultSpells = learnDefaultSpells.Checked; Xfer.PoisonLevel = (byte)poisonPower.Value; if (Xfer.MaidenBodyColors != null) { for (int i = 0; i < 6; i++) { Xfer.MaidenBodyColors[i] = maidenColorSelectors[i].BackColor; } } ThingDb.Thing tt = ThingDb.Things[obj.Name]; if (tt.Subclass[(int)ThingDb.Thing.SubclassBitIndex.FEMALE_NPC]) { Xfer.MaidenVoiceSet = npcSoundSet.Text; } if (tt.Subclass[(int)ThingDb.Thing.SubclassBitIndex.WOUNDED_NPC]) { Xfer.WoundedNPCVoiceSet = npcSoundSet.Text; } }
public override bool FromStream(Stream mstream, short ParsingRule, ThingDb.Thing thing) { Text = ""; BinaryReader br = new BinaryReader(mstream); int len = br.ReadInt32(); Text = Encoding.UTF8.GetString(br.ReadBytes(len)); Text = Text.TrimEnd('\0'); return(true); }
public override void WriteToStream(Stream mstream, short ParsingRule, ThingDb.Thing thing) { NoxBinaryWriter bw = new NoxBinaryWriter(mstream, CryptApi.NoxCryptFormat.NONE); bw.Write(MapName.Length + 1); bw.Write(Encoding.ASCII.GetBytes(MapName)); bw.Write((byte)0); // null terminator bw.Write(ExitX); bw.Write(ExitY); }
private void nameBox_SelectedIndexChanged(object sender, System.EventArgs e) { objPs = ((ThingDb.Thing)ThingDb.Things[nameBox.Text]); if (nameBox.Text != obj.Name) { obj.Name = nameBox.Text; obj.NewDefaultExtraData(); } xtraBox.Checked = (obj.Terminator > 0); }
public override void SetObject(Map.Object obj) { this.obj = obj; ThingDb.Thing tt = ThingDb.Things[obj.Name]; // читаем Xfer xfer = obj.GetExtraData <ElevatorXfer>(); List <Map.Object> objects = new List <Map.Object>(); // убираем этот элеватор из списков listElevators.Remove(obj); listElevShafts.Remove(obj); // для шахт выводим список подьемников if (tt.HasClassFlag(ThingDb.Thing.ClassFlags.ELEVATOR_SHAFT)) { objects = listElevators; isShaft = true; } // для подьемников список шахт else if (tt.HasClassFlag(ThingDb.Thing.ClassFlags.ELEVATOR)) { objects = listElevShafts; isShaft = false; } elevatorList.Items.Clear(); string name; foreach (Map.Object e in objects) { name = e.ToString(); if (e.Scr_Name.Length > 0) { name = '"' + e.ScrNameShort + '"'; } elevatorList.Items.Add(name); } // показываем куда подключен if (xfer.ExtentLink > 0) { checkIsLinked.Checked = true; int index = 0; foreach (Map.Object o in objects) { if (o.Extent == xfer.ExtentLink) { elevatorList.SelectedIndex = index; break; } index++; } } }
public override bool FromStream(Stream mstream, short ParsingRule, ThingDb.Thing thing) { NoxBinaryReader br = new NoxBinaryReader(mstream); // 4 enchantments for (int i = 0; i < 4; i++) { Enchantments[i] = br.ReadString(); } return(true); }
public override bool FromStream(Stream mstream, short ParsingRule, ThingDb.Thing thing) { NoxBinaryReader br = new NoxBinaryReader(mstream); if (ParsingRule < 41) { return(false); // unlikely } SpellName = br.ReadString(); return(true); }
public void DefaultsFor(ThingDb.Thing thing) { // Durability //Durability = (short) thing.Health; // Handle magic staves if (thing.HasClassFlag(ThingDb.Thing.ClassFlags.WAND) && !thing.Subclass[(int)ThingDb.Thing.SubclassBitIndex.STAFF]) { WandChargesCurrent = thing.WandCharges; WandChargesLimit = thing.WandCharges; } }
public override bool FromStream(Stream mstream, short ParsingRule, ThingDb.Thing thing) { BinaryReader rdr = new BinaryReader(mstream); if (ParsingRule >= 0x3D) { ManaPool = rdr.ReadInt32(); Unused = rdr.ReadByte(); } return(true); }
public override void SetObject(Map.Object obj) { this.obj = obj; ThingDb.Thing tt = ThingDb.Things[obj.Name]; WeaponXfer weapon; ArmorXfer armor; AmmoXfer ammo; TeamXfer team; switch (tt.Xfer) { case "WeaponXfer": weapon = obj.GetExtraData <WeaponXfer>(); enchantment1.Text = weapon.Enchantments[0]; enchantment2.Text = weapon.Enchantments[1]; enchantment3.Text = weapon.Enchantments[2]; enchantment4.Text = weapon.Enchantments[3]; durability.Enabled = true; durability.Value = weapon.Durability; if (tt.HasClassFlag(ThingDb.Thing.ClassFlags.WAND) && !tt.Subclass[(int)ThingDb.Thing.SubclassBitIndex.STAFF]) { ammoMin.Enabled = true; ammoMax.Enabled = true; ammoMin.Value = weapon.WandChargesCurrent; ammoMax.Value = weapon.WandChargesLimit; } break; case "ArmorXfer": armor = obj.GetExtraData <ArmorXfer>(); enchantment1.Text = armor.Enchantments[0]; enchantment2.Text = armor.Enchantments[1]; enchantment3.Text = armor.Enchantments[2]; enchantment4.Text = armor.Enchantments[3]; durability.Enabled = true; durability.Value = armor.Durability; break; case "AmmoXfer": ammo = obj.GetExtraData <AmmoXfer>(); enchantment1.Text = ammo.Enchantments[0]; enchantment2.Text = ammo.Enchantments[1]; enchantment3.Text = ammo.Enchantments[2]; enchantment4.Text = ammo.Enchantments[3]; ammoMin.Enabled = true; ammoMax.Enabled = true; ammoMin.Value = ammo.AmmoCurrent; ammoMax.Value = ammo.AmmoLimit; break; case "TeamXfer": team = obj.GetExtraData <TeamXfer>(); enchantment1.Text = team.Enchantments[0]; enchantment2.Text = team.Enchantments[1]; enchantment3.Text = team.Enchantments[2]; enchantment4.Text = team.Enchantments[3]; break; } pausePreview = false; }
public override void WriteToStream(Stream mstream, short ParsingRule, ThingDb.Thing thing) { NoxBinaryWriter bw = new NoxBinaryWriter(mstream, CryptApi.NoxCryptFormat.NONE); bw.Write(Angle); bw.Write(TargX); bw.Write(TargY); bw.Write((byte)Spells.Count); foreach (string s in Spells) { bw.Write(s); } }
public override void WriteToStream(Stream mstream, short ParsingRule, ThingDb.Thing thing) { BinaryWriter bw = new BinaryWriter(mstream); bw.Write(MovingSpeed); bw.Write(WaypointID); bw.Write(MovedObjExtent); bw.Write(MoveType); bw.Write(WaypointStartID); bw.Write(WaypointEndID); bw.Write(MoverAcceleration); bw.Write(MoverSpeed); }
public override bool FromStream(Stream mstream, short ParsingRule, ThingDb.Thing thing) { NoxBinaryReader br = new NoxBinaryReader(mstream); Unknown2 = br.ReadBytes(6); LightRadius = br.ReadInt32(); NumOfColors = br.ReadInt32(); // LightIntensity = br.ReadByte();; //gradient amount 32 00 UnknownVal = br.ReadBytes(21); // Unknown5 = br.ReadInt32(); // // Unknown6 = br.ReadInt16(); // ChangeIntensity = br.ReadInt16(); // Color change speed 15 Color1 = br.ReadColor(); Color2 = br.ReadColor(); /* * R1 = br.ReadByte(); * G1 = br.ReadByte(); // Flags2? * B1 = br.ReadByte(); // Some flag * R2 = br.ReadByte(); * G2 = br.ReadByte(); // Flags2? * B2 = br.ReadByte(); // Some flag */ Unknown3 = br.ReadBytes(74); PulseSpeed = br.ReadByte(); Unknown4 = br.ReadBytes(18); /* * //ChangeColors = new Color[16];18 * //for (int i = 0; i < 16; i++) ChangeColors[i] = br.ReadColor(); * // Unknown3 = new byte[16]; * //for (int i = 0; i < 16; i++) ChangeIntensity[i] = br.ReadByte(); * ChangeRadius = new byte[16]; * for (int i = 0; i < 16; i++) ChangeRadius[i] = br.ReadByte(); * ColorChangeIndex = br.ReadInt16(); * IntensityChangeIndex = br.ReadInt16(); * RadiusChangeIndex = br.ReadInt16(); * ObjExtentID = br.ReadInt32(); * Unknown13 = br.ReadInt16(); // some flags * Unknown14 = br.ReadInt16(); * Unknown15 = br.ReadByte(); * // Probably type of light (0 = emitter, 1 = absorber?) * if (ParsingRule >= 42) * IsAntiLight = br.ReadInt32(); * else * IsAntiLight = br.ReadByte(); */ return(true); }
public override bool FromStream(Stream mstream, short ParsingRule, ThingDb.Thing thing) { BinaryReader br = new BinaryReader(mstream); int nameLen = br.ReadInt32(); MapName = Encoding.ASCII.GetString(br.ReadBytes(nameLen)).TrimEnd('\0'); if (ParsingRule >= 31) { ExitX = br.ReadSingle(); ExitY = br.ReadSingle(); } return(true); }
public override void WriteToStream(Stream baseStream, short ParsingRule, ThingDb.Thing thing) { BinaryWriter bw = new BinaryWriter(baseStream); bw.Write(ExtentLink); if (thing.HasClassFlag(ThingDb.Thing.ClassFlags.ELEVATOR)) { bw.Write(Height); if (ParsingRule >= 0x3D) { bw.Write(Status); } } }