private void OnCursorChanged(GUCMainMenu sender) { if (cursor >= 0 && cursor < _Characters.Length) { Character.Character character = _Characters[cursor]; _CharacterNameText.Text = character.Name; _CharacterNameText.Show(); _CharacterDisplay.SetVisual(character.Template.Model.BaseDef.Visual); //We have custom visuals from the server because it is a human character. if (character is HumanCharacter humanCharacter) { HumanCharacterVisuals visuals = humanCharacter.CharacterVisuals; _CharacterDisplay.SetAdditionalVisuals(visuals.BodyMesh.ToString(), (int)visuals.BodyTex, visuals.HeadMesh.ToString(), (int)visuals.HeadTex); _CharacterDisplay.SetFatness(visuals.Fatness); _CharacterDisplay.SetScale(new Types.Vec3f(visuals.BodyWidth, 1.0f, visuals.BodyWidth)); } else { //Its a non human character, take the visuals from the template. _CharacterDisplay.SetAdditionalVisuals(character.Template.BodyMesh, character.Template.BodyTex, character.Template.HeadMesh, character.Template.HeadTex); _CharacterDisplay.SetFatness(1); _CharacterDisplay.SetScale(new Types.Vec3f(1.0f, 1.0f, 1.0f)); } } }
public override void Notify(ref Character.Character c) { foreach (Variables.Statement.Assignment assig in Assignments) { c.VarTable = assig.Evaluate(c.VarTable); } }
public GuidancePotion(Character.Character character) : base(character) { Texture = (Texture)Resources.Load("Sprites/potion_guidance", typeof(Texture)); Duration = 10; Amount = 1; }
public void OnFirstEnter(ref Character.Character c) { foreach (SegmentEventHandler evh in OnFirstEnterList) { evh.Notify(ref c); } }
public HealthPotion(Character.Character character) : base(character) { Texture = (Texture)Resources.Load("Sprites/potion_health", typeof(Texture)); Boost = 30; Duration = 0; Amount = 2; }
//TODO: this needs more work done and also need to figure out a nice way to display it to the user private static void DisplayStats(User.User player, List <string> commands) { Character.Character character = player.Player as Character.Character; if (character != null) { StringBuilder sb = new StringBuilder(); sb.AppendLine("You are currently " + character.ActionState.ToString().ToUpper() + " and " + character.StanceState.ToString().ToUpper()); sb.AppendLine("\nName: " + character.FirstName.CamelCaseWord() + " " + character.LastName.CamelCaseWord()); sb.AppendLine("Level : " + character.Level); sb.AppendLine("Class: " + character.Class); sb.AppendLine("Race: " + character.Race); sb.AppendLine("XP: " + (long)character.Experience); sb.AppendLine("Next Level XP required: " + (long)character.NextLevelExperience + " (Needed: " + (long)(character.NextLevelExperience - character.Experience) + ")"); sb.AppendLine("\n[Attributes]"); foreach (KeyValuePair <string, Character.Attribute> attrib in player.Player.GetAttributes()) { sb.AppendLine(string.Format("{0,-12}: {1}/{2,-3} Rank: {3}", attrib.Key.CamelCaseWord(), attrib.Value.Value, attrib.Value.Max, attrib.Value.Rank)); } sb.AppendLine("\n[Sub Attributes]"); foreach (KeyValuePair <string, double> attrib in player.Player.GetSubAttributes()) { sb.AppendLine(attrib.Key.CamelCaseWord() + ": \t" + attrib.Value); } sb.AppendLine("Description/Bio: " + player.Player.Description); player.MessageHandler(sb.ToString()); } }
public InventoryWindow(Character.Character player) { Player = player; Title = LanguageConfig.Config.Inventory; Opacity = 255; SelectedItemIndex = -1; SelectedEquipmentIndex = -1; BackgroundColor = Color.White; itemSlots = new Vector2(5, 11); itemSlotSize = new Vector2(46, 46); equipmentSlotSize = new Vector2(66, 66); textPadding = new Vector2(74, 0); borderPadding = new Vector2(10, 10); Width = GameGraphics.InventoryBackground.Width; Height = GameGraphics.InventoryBackground.Height; EquipmentSlots = new List<ItemSlot>(); itemDetailsFont = Fonts.Arial12; scrollbar = new Rectangle(); ItemSlotBackground = GameGraphics.ItemSlotBackground; }
// TODO: This could be a little smarter. // TODO: E.g. if damage is negative, it implies healing, which we'd want to apply to ourself. // TODO: E.g. if spell has AOE, ensure we pick a target that does not implicate ourself in the damage radius. public Character.Character FindDefaultTarget(CharacterContext context) { float sqClosest = float.MaxValue; Character.Character bestCharacter = null; foreach (var character in context.Dungeon.Characters) { if (character == context.Self) { continue; } if (context.FieldOfView.ContainsKey(character.Position)) { var sqDist = math.distancesq(character.Position, context.Self.Position); if (sqDist < sqClosest) { sqClosest = sqDist; bestCharacter = character; } } } if (bestCharacter != null) { return(bestCharacter); } return(context.Self); }
public void SetDisplayCharacter(Character.Character character) { if (character == null) { throw new ArgumentNullException(nameof(character)); } _CharacterNameText.Text = character.Name; _CharacterNameText.Show(); _Character.SetVisual(character.Template.Model.BaseDef.Visual); //We have custom visuals from the server because it is a human character. if (character is HumanCharacter humanCharacter) { HumanCharacterVisuals visuals = humanCharacter.CharacterVisuals; _Character.SetAdditionalVisuals(visuals.BodyMesh.ToString(), (int)visuals.BodyTex, visuals.HeadMesh.ToString(), (int)visuals.HeadTex); _Character.SetFatness(visuals.Fatness); _Character.SetScale(new Types.Vec3f(visuals.BodyWidth, 1.0f, visuals.BodyWidth)); } else { //Its a non human character, take the visuals from the template. _Character.SetAdditionalVisuals(character.Template.BodyMesh, character.Template.BodyTex, character.Template.HeadMesh, character.Template.HeadTex); _Character.SetFatness(1); _Character.SetScale(new Types.Vec3f(1.0f, 1.0f, 1.0f)); } _DisplayCharacterIsHidden = false; }
public HealthRegenerationPotion(Character.Character character) : base(character) { Texture = (Texture)Resources.Load("Sprites/potion_regen", typeof(Texture)); Boost = 4; Duration = 10; Amount = 1; }
public ICharacter AddCharacter(Guid guid, CharacterData characterData, IRoom room) // PC { ICharacter character = new Character.Character(guid, characterData, room); _characters.Add(character); return(character); }
public override bool Cancel(Character.Character character) { if (base.Cancel(character)) { character.Attribute.WeaponExtraAttackSpeed = 0; character.Attribute.WeaponExtraAttackDistance = 0; if (AttackLimit.ContainsKey(WeaponAttackType.Physical)) { character.Attribute.AttackPhysicalMin -= AttackLimit[WeaponAttackType.Physical].Key; character.Attribute.AttackPhysicalMax -= AttackLimit[WeaponAttackType.Physical].Value; } if (AttackLimit.ContainsKey(WeaponAttackType.Magic)) { character.Attribute.AttackMagicMin -= AttackLimit[WeaponAttackType.Magic].Key; character.Attribute.AttackMagicMax -= AttackLimit[WeaponAttackType.Magic].Value; } foreach (KeyValuePair <int, KeyValuePair <AttributeCode, float> > attribute in ForgingAttributes) { if (attribute.Key > 0) { UpdateCharacterAttribute(character, attribute.Value, true); } } foreach (KeyValuePair <AttributeCode, float> attribute in ElementAttributes.Value) { UpdateCharacterAttribute(character, attribute, false); } character.Attribute.CalculateAttributes(); return(true); } return(false); }
public bool MoveTo(Int32 id, ref Character.Character c) { if (CanGoTo(id, c.VarTable)) { if (Current.IsFirst) { Current.OnFirstExit(ref c); } else { Current.OnExit(ref c); } _current = id; if (Current.IsFirst) { Current.OnFirstEnter(ref c); } else { Current.OnEnter(ref c); } } return(false); }
protected new void AddItem(string[] inputParams) { Character.Character characterToAcceptIitem = GetCharacterById(inputParams[1]); Item.Item itemToAdd; switch (inputParams[2].ToLower()) { case "axe": itemToAdd = new Axe(inputParams[3]); characterToAcceptIitem.AddToInventory(itemToAdd); break; case "shield": itemToAdd = new Shield(inputParams[3]); characterToAcceptIitem.AddToInventory(itemToAdd); break; case "pill": itemToAdd = new Pill(inputParams[3]); characterToAcceptIitem.AddToInventory(itemToAdd); break; case "injection": itemToAdd = new Injection(inputParams[3]); characterToAcceptIitem.AddToInventory(itemToAdd); break; default: break; } }
// Created by: // Hugo Kamps // S1084074 // Gets the needed GameObjects needed for the transition to new levels public void SetGameObjects() { if (Character == null) { Character = FindObjectOfType <Character.Character>(); } }
public GoapMovingState(GoapAgent agent) : base(agent) { _pathFollowing = new EntityPathFollowingBehaviour(agent.Entity); _seek = new EntitySeekBehaviour(agent.Entity); _character = GameManager.Instance.Character; _character.NodeChanged += CharacterNodeChanged; }
public SpeedPotion(Character.Character character) : base(character) { Texture = (Texture)Resources.Load("Sprites/potion_speed", typeof(Texture)); Boost = 1.5f; Duration = 10; Amount = 1; }
public LoadCharacterDialog(Database database) { Characters = new List <Character.Character>(); this.database = database; SelectedCharacter = null; InitializeComponent(); }
public MeleeAttack(Character.Character attacker, GameObject target, int delay, SpriteAnimation targetAnimation) { Delay = delay; Attacker = attacker; Target = target; TargetAnimation = targetAnimation; Timer = 0; }
public LoadCharacterDialog(Database database) { Characters = new List<Character.Character>(); this.database = database; SelectedCharacter = null; InitializeComponent(); }
public void OnFirstExit(ref Character.Character c) { IsFirst = false; foreach (SegmentEventHandler evh in OnFirstExitList) { evh.Notify(ref c); } }
public User() { _userBuffer = new ClientHandling.MessageBuffer(); CurrentState = UserState.JustConnected; UserID = new Guid().ToString(); _character = CharacterFactory.Factory.CreateCharacter(CharacterEnums.CharacterType.PLAYER, CharacterEnums.CharacterRace.HUMAN, CharacterEnums.CharacterClass.FIGHTER); LoginCompleted = false; }
private void OnKnownEnemyDeath(Character.Character character) { if (_knownEnemyInfos.ContainsKey(character)) { var info = _knownEnemyInfos[character]; GameObject.Destroy(info.gameObject); _knownEnemyInfos.Remove(character); } }
private static bool CheckStats(Character.Character character, IList <int> expectedStats, string size) => expectedStats[0] == character.Strength.ToInteger() && expectedStats[1] == character.Dexterity.ToInteger() && expectedStats[2] == character.Constitution.ToInteger() && expectedStats[3] == character.Intelligence.ToInteger() && expectedStats[4] == character.Wisdom.ToInteger() && expectedStats[5] == character.Charisma.ToInteger() && expectedStats[6] == character.Race.Speed.ToInteger() && size == character.Race.Size.ToString();
private void ListBoxCharactersSelectedIndexChanged(object sender, EventArgs e) { if (listBoxCharacters.SelectedIndex < 0 || listBoxCharacters.SelectedIndex >= Characters.Count) return; SelectedCharacter = Characters[listBoxCharacters.SelectedIndex]; DialogResult = DialogResult.OK; Close(); }
public void IncreaseStatsBasedOnLevel(GameObject enemy, int level) { Character.Character c = enemy.GetComponent <Character.Character>(); c.Strength += stepStrength * level; c.Dexterity += stepDexterity * level; c.Constitution += stepConstitution * level; c.Intelligence += stepIntelligence * level; c.RecalculateCharacterStats(); }
public void Update(GameTime gameTime, Character.Character player) { Player = player; healthPerc = (player.Stats.Hp*100)/player.Stats.MaxHp; staminaPerc = player.Stats.MaxStamina > 0 ? (player.Stats.Stamina*100)/player.Stats.MaxStamina : 0; resourcePerc = player.Stats.MaxMana > 0 ? (player.Stats.Mana*100)/player.Stats.MaxMana : 0; float currParcialXp = Player.Stats.Experience - Character.Character.TotalExpForLevel(Player.Stats.Level); expPerc = (currParcialXp*100)/Character.Character.TotalExpForLevel(Player.Stats.Level + 1); }
//todo: rewrite /// <summary> /// Can character take a talent /// </summary> /// <param name="character">Character than request access</param> /// <returns></returns> public bool PrerequisiteAccess(Character.Character character) { bool hasAccess = false; int prerquisiteAccessed = 0; foreach (var item in Prerequisites) { switch (item.Item1.Name) { case "Talent": //todo: update with specialization if (character.Talents.Contains(TalentList.Talents.Where(t => t.Name == item.Item2).FirstOrDefault())) { prerquisiteAccessed++; } break; case "Characteristic": if (character.Characteristics.Where(c => c.Name.ToString() == item.Item2).FirstOrDefault().Value >= item.Item4) { prerquisiteAccessed++; } break; case "Trait": if (character.Traits.Contains(Traits.TraitList.Traits.Where(t => t.Name == item.Item2).FirstOrDefault())) { prerquisiteAccessed++; } break; case "Item": if (character.Gear.Where(i => i.Name == item.Item2).FirstOrDefault() != null) { prerquisiteAccessed++; } break; case "CommonSkills": if (character.CommonSkills.Where(c => c.Name.ToString() == item.Item2).FirstOrDefault().Rank >= (Ranking)item.Item4) { prerquisiteAccessed++; } break; case "SpecializedSkills": //todo: update with specialization if (character.SpecializedSkills.Where(c => c.Name.ToString() == item.Item2).FirstOrDefault().Rank >= (Ranking)item.Item4) { prerquisiteAccessed++; } break; } } return(hasAccess); }
public PotionRunnable(Character.Character player, Potion potion) { _potion = potion; _player = player; _thread = new Thread(Run); _timer = new Timer { Interval = 1000 }; _timer.Elapsed += DisplayTimeEvent; }
private void ListBoxCharactersSelectedIndexChanged(object sender, EventArgs e) { if (listBoxCharacters.SelectedIndex < 0 || listBoxCharacters.SelectedIndex >= Characters.Count) { return; } SelectedCharacter = Characters[listBoxCharacters.SelectedIndex]; DialogResult = DialogResult.OK; Close(); }
public ICharacter AddCharacter(Guid guid, CharacterBlueprint blueprint, IRoom room) // NPC { if (blueprint == null) { throw new ArgumentNullException(nameof(blueprint)); } ICharacter character = new Character.Character(guid, blueprint, room); _characters.Add(character); return(character); }
public int SavingThrow(Character.Character character) { var d20 = new D20(); var roll = d20.Roll() + Modifier; if (SavingThrowProficiency) { roll += character.Class.ProfBonus; } return(roll); }
private List <Item.Item> SpawnLoot(Character.Character character) { List <Item.Item> loot = new List <Item.Item>(); var numToSpawn = Random.Range(_meta.MinLootDrops, _meta.MaxLootDrops + 1); if (_meta.AlwaysDropLootItems.Count > 0) { numToSpawn -= _meta.AlwaysDropLootItems.Count; if (_meta.AlwaysDropLootItems.Count >= _meta.MaxLootDrops && _meta.LootItems.Count > 0) { Debug.LogError("Random loot will never drop. Always drop loot takes up all the slots"); } foreach (var entry in _meta.AlwaysDropLootItems) { SpawnLootEntry(character, entry, loot); } } if (numToSpawn <= 0) { return(loot); } var lootPool = new List <LootDbEntry>(_meta.LootItems); for (var i = 0; i < numToSpawn; i++) { var totalWeight = 0f; foreach (var entry in lootPool) { totalWeight += entry.DropChance; } var targetWeight = UnityEngine.Random.value * totalWeight; foreach (var entry in lootPool) { targetWeight -= entry.DropChance; if (targetWeight <= 0) { if (!entry.CanDropMultipleTimes) { lootPool.Remove(entry); } SpawnLootEntry(character, entry, loot); break; } } } return(loot); }
public bool TryInteract(Character.Character character) { foreach (var interaction in _interactions) { if (interaction.TryInteract(character)) { return(true); } } return(false); }
public void Use(CharacterContext context, Character.Character target) { var dir = (target.Position - context.Self.Position); var targetDodgeChance = target.Dodge * 0.01f; if (UnityEngine.Random.value < targetDodgeChance) { Debug.Log($"{target.name} dodged {context.Self.name}'s attack!"); if (_missedEffectPrefab != null) { var fx = GameObject.Instantiate(_missedEffectPrefab, new Vector3(target.Position.x, target.Position.y, 0), Quaternion.identity); fx.Setup(dir); } return; } Debug.Log($"{context.Self.name} {_attackVerb} {target.name}!"); var crit = UnityEngine.Random.value < _critChance; if (crit) { target.Health -= _damage * 2; target.AddTimedStatus(CharacterStatusType.Stunned, 2); Debug.Log($"{target.name} got stunned!"); if (_criticalHitEffectPrefab != null) { var fx = GameObject.Instantiate(_criticalHitEffectPrefab, new Vector3(target.Position.x, target.Position.y, 0), Quaternion.identity); fx.Setup(dir); } else if (_hitEffectPrefab != null) { var fx = GameObject.Instantiate(_hitEffectPrefab, new Vector3(target.Position.x, target.Position.y, 0), Quaternion.identity); fx.Setup(dir); } } else { target.Health -= _damage; if (_hitEffectPrefab != null) { var fx = GameObject.Instantiate(_hitEffectPrefab, new Vector3(target.Position.x, target.Position.y, 0), Quaternion.identity); fx.Setup(dir); } } }
public StatsWindow(Character.Character Player) { Title = Player.Name; this.Player = Player; Width = 560; Height = 600; Opacity = 255; BackgroundColor = Color.White; textPadding = new Vector2(115, 0); Position = new Vector2( GameConfig.Config.WindowWidth/2 - Width/2, GameConfig.Config.WindowHeight/2 - Height/2); }
public static IActor CreateCharacter(CharacterType characterType, int MobTypeID = 0) { IActor character = null; switch (characterType) { case CharacterType.NPC: if (MobTypeID != 0) { character = CreateNPCCharacter(MobTypeID).Result; } else { character = CreateNPCCharacterHusk(); } break; case CharacterType.PLAYER: character = new Character.Character(); break; default: character = null; break; } return character; }
public DebugWindow(LotusGame Game) { Player = Game.Player; game = Game; Width = 560; Height = 600; Opacity = 255; BackgroundColor = Color.White; addLevel = new Button("Add Level"); addLevel.Clicked += addLevel_Clicked; btnSaveGame = new Button("Save Game"); btnSaveGame.Clicked += btnSaveGame_Clicked; Controls = new List<Button>(); Controls.Add(addLevel); Controls.Add(btnSaveGame); Position = new Vector2( GameConfig.Config.WindowWidth/2 - Width/2, GameConfig.Config.WindowHeight/2 - Height/2); }
private void DatabaseLoad(string filename) { try { database.Load(filename); } catch (Exception e) { ExceptionDialog exceptionDialog = new ExceptionDialog("Database appears to be corrupted!", e); exceptionDialog.ShowDialog(this); return; } Characters.Clear(); listBoxCharacters.Items.Clear(); try { int characterCount = database.ReadBlobByKey("num")[0]; for (int i = 0; i < characterCount; ++i) { Character.Character character = new Character.Character(i); character.Load(database); Characters.Add(character); listBoxCharacters.Items.Add(character.Name); } } catch (Exception e) { ExceptionDialog exceptionDialog = new ExceptionDialog("Database appears to be corrupted!", e); exceptionDialog.ShowDialog(this); Characters.Clear(); listBoxCharacters.Items.Clear(); } }
private void LoadCharacterDatabase() { Enabled = false; LoadCharacter loadCharacter = new LoadCharacter(database) { StartPosition = FormStartPosition.CenterParent }; DialogResult result = loadCharacter.ShowDialog(this); if (result == DialogResult.OK) { character = loadCharacter.SelectedCharacter; SyncCharacterDataToGui(); } Enabled = character != null; }
public OnScreenInfo(Character.Character player) { Player = player; }
public override void UpdateMouseInput() { if (!Game.Paused) { #region Check enemy hover currentTarget = null; foreach (Npc npc in Game.CurrentMap.MapNpcs.FindAll(x => x.IsAlive)) { var rect = new Rectangle( (int)(npc.Position.X - npc.CollisionRadius), (int)(npc.Position.Y - npc.CollisionRadius), (int)npc.CollisionRadius * 2, (int)npc.CollisionRadius * 2); if (rect.Contains(InputManager.MouseToMapPoint)) currentTarget = npc; } foreach (Enemy en in AliveEnemies) { var rect = new Rectangle( (int)(en.Position.X - en.CollisionRadius), (int)(en.Position.Y - en.CollisionRadius), (int)en.CollisionRadius * 2, (int)en.CollisionRadius * 2); if (rect.Contains(InputManager.MouseToMapPoint)) currentTarget = en; } #endregion } }
private void LoadCharacterDatabase() { Enabled = false; LoadCharacterDialog loadCharacter = new LoadCharacterDialog(database) { StartPosition = FormStartPosition.CenterParent }; DialogResult result = loadCharacter.ShowDialog(this); if (result == DialogResult.OK) { tabControlInventory.TabPages.Clear(); tabControlEquipment.TabPages.Clear(); character = loadCharacter.SelectedCharacter; SyncCharacterDataToGui(); } Enabled = character != null; }