コード例 #1
0
 public static string CreateCharacter(Alignment alignment, Background background, int baseCharisma, int baseConstitution, int baseDexterity, int baseIntelligence, int baseStrength, int baseWisdom, List<Spell> cantrips, CharacterClass chClass, List<Skill> classSkills, List<Skill> classTools, int gender, int hairColor, int hairStyle, string name, Race race, List<Skill> raceSkills, int skinColor, List<Spell> spellsKnown, CharacterClass subClass, List<Power> selectedPowers)
 {
     CharacterCreation chr = new CharacterCreation()
     {
         Alignment = alignment,
         Background = background,
         BaseCharisma = baseCharisma,
         BaseConstitution = baseConstitution,
         BaseDexterity = baseDexterity,
         BaseIntelligence = baseIntelligence,
         BaseStrength = baseStrength,
         BaseWisdom = baseWisdom,
         Cantrips = cantrips,
         Class = chClass,
         ClassSkills = classSkills,
         ClassTools = classTools,
         Gender = gender,
         HairColor = hairColor,
         HairStyle = hairStyle,
         Name = name,
         Race = race,
         RaceSkills = raceSkills,
         SelectedPowers = selectedPowers,
         SessionId = SessionId,
         SkinColor = skinColor,
         SpellsKnown = spellsKnown,
         SubClass = subClass,
         UserId = UserId
     };
     try
     {
         string wrURI = baseServerTarget + "createcharacter";
         string msg = chr.ToString();
         WebRequest wreq = WebRequest.Create(wrURI + "?message=" + msg);
         wreq.Method = "POST";
         wreq.ContentLength = 0;
         WebResponse wresp = wreq.GetResponse();
         using (TextReader sr = new StreamReader(wresp.GetResponseStream()))
         {
             XmlSerializer xml = new XmlSerializer(typeof(string), StringNamespace);
             string resp = (string)xml.Deserialize(sr);
             return resp;
         }
     }
     catch 
     {
         return String.Empty;
     }
 }
コード例 #2
0
ファイル: ServerService.cs プロジェクト: Zelknolf/Mundasia
 public string CreateCharacter(string message)
 {
     CharacterCreation nChar = new CharacterCreation(message);
     Account targetAccount = Account.LoadAccount(nChar.UserId);
     if(targetAccount == null)
     {
         return "Invalid account";
     }
     if (targetAccount.SessionId != nChar.SessionId)
     {
         return "Invalid session Id";
     }
     Character chr;
     try
     {
         chr = new Character()
         {
             AccountName = targetAccount.UserName,
             CharacterHobby = (uint)nChar.Hobby,
             CharacterName = nChar.Name,
             CharacterProfession = (uint)nChar.Profession,
             CharacterRace = (uint)nChar.Race,
             CharacterTalent = (uint)nChar.Talent,
             CharacterVice = (uint)nChar.Vice,
             CharacterVirtue = (uint)nChar.Virtue,
             MoralsAuthority = (uint)nChar.Authority,
             MoralsCare = (uint)nChar.Authority,
             MoralsFairness = (uint)nChar.Fairness,
             MoralsLoyalty = (uint)nChar.Loyalty,
             MoralsTradition = (uint)nChar.Tradition,
             Sex = nChar.Sex,
             SkinColor = (uint)nChar.SkinColor,
             HairColor = (uint)nChar.HairColor,
             HairStyle = (uint)nChar.HairStyle,
         };
     }
     catch
     {
         return "Invalid character data; likely a negative number passed to an unsigned field.";
     }
     if (!chr.ValidateCharacter())
     {
         return "Character violates rules of character creation.";
     }
     if(targetAccount.LoadCharacter(chr.CharacterName) != null)
     {
         return "A character with that name already exists";
     }
     if (!targetAccount.NewCharacter(chr))
     {
         return "Unable to save character";
     }
     try
     {
         Aspiration asp = Aspiration.GetAspiration((uint)nChar.Aspiration);
         foreach (uint ab in asp.Abilities)
         {
             chr.Abilities[ab] += 1;
         }
         int skills = 3;
         foreach (uint sk in asp.Skills)
         {
             if (!chr.Skills.ContainsKey(sk))
             {
                 chr.Skills.Add(sk, 2);
                 skills--;
             }
             if (skills == 0) break;
         }
     }
     catch
     {
         return "Failed to parse aspiration.";
     }
     if (!targetAccount.SaveCharacter(chr))
     {
         return "Could not save character.";
     }
     return "Success: " + chr.CharacterName;
 }
コード例 #3
0
ファイル: ServiceConsumer.cs プロジェクト: Zelknolf/Mundasia
 public static string CreateCharacter(string name, int authority, int care, int fairness, int hobby, int loyalty, int profession, int race, int sex, int talent, int tradition, int vice, int virtue, int aspiration, int hairStyle, int hairColor, int skinColor)
 {
     CharacterCreation chr = new CharacterCreation()
     {
         Authority = authority,
         Care = care,
         Fairness = fairness,
         Hobby = hobby,
         Loyalty = loyalty,
         Name = name,
         Profession = profession,
         Race = race,
         SessionId = SessionId,
         Sex = sex,
         Talent = talent,
         Tradition = tradition,
         UserId = UserId,
         Vice = vice,
         Virtue = virtue,
         Aspiration = aspiration,
         HairColor = hairColor,
         HairStyle = hairStyle,
         SkinColor = skinColor,
     };
     try
     {
         string wrURI = baseServerTarget + "createcharacter";
         string msg = chr.ToString();
         WebRequest wreq = WebRequest.Create(wrURI + "?message=" + msg);
         wreq.Method = "POST";
         wreq.ContentLength = 0;
         WebResponse wresp = wreq.GetResponse();
         using (TextReader sr = new StreamReader(wresp.GetResponseStream()))
         {
             XmlSerializer xml = new XmlSerializer(typeof(string), StringNamespace);
             string resp = (string)xml.Deserialize(sr);
             return resp;
         }
     }
     catch
     {
         return String.Empty;
     }
 }
コード例 #4
0
        public string CreateCharacter(string message)
        {
            CharacterCreation nChar = new CharacterCreation(message);
            Account targetAccount = Account.LoadAccount(nChar.UserId);
            if(targetAccount == null)
            {
                return "Invalid account";
            }
            if (targetAccount.SessionId != nChar.SessionId)
            {
                return "Invalid session Id";
            }
            if(!nChar.Valid)
            {
                return "Character invalid";
            }
            Creature chr;
            try
            {
                chr = new Creature()
                {
                    AccountName = targetAccount.UserName,
                    Background = nChar.Background,
                    Cantrips = nChar.Cantrips,
                    CharacterAlignment = nChar.Alignment,
                    CharacterName = nChar.Name,
                    CharacterRace = nChar.Race,
                    Classes = new Dictionary<CharacterClass, uint>() { { nChar.Class, 1 } },
                    Gender = nChar.Gender,
                    Equipment = new Dictionary<int, InventoryItem>(),
                    Inventory = new List<InventoryItem>(),
                    Powers = nChar.SelectedPowers,
                    ProficiencyBonus = 2,
                    ProficientSaves = nChar.Class.ProficientSaves,
                    SpellsKnown = nChar.SpellsKnown,
                    SubClasses = new Dictionary<CharacterClass, CharacterClass>() { { nChar.Class, nChar.SubClass } },

                    Strength = nChar.BaseStrength + nChar.Race.Strength,
                    Dexterity = nChar.BaseDexterity + nChar.Race.Dexterity,
                    Constitution = nChar.BaseConstitution + nChar.Race.Constitution,
                    Intelligence = nChar.BaseIntelligence + nChar.Race.Intelligence,
                    Wisdom = nChar.BaseWisdom + nChar.Race.Wisdom,
                    Charisma = nChar.BaseCharisma + nChar.Race.Charisma,

                    SkinColor = (uint)nChar.SkinColor,
                    HairColor = (uint)nChar.HairColor,
                    HairStyle = (uint)nChar.HairStyle,
                };
            }
            catch
            {
                return "Invalid character data; likely a negative number passed to an unsigned field.";
            }
            if(!chr.ValidateCharacter())
            {
                return "Could not validate created character.";
            }
            chr.Skills = new List<Skill>();
            chr.Skills.AddRange(nChar.ClassSkills);
            chr.Skills.AddRange(nChar.ClassTools);
            chr.Skills.AddRange(nChar.RaceSkills);
            chr.Skills.AddRange(nChar.Race.AutomaticSkills);

            chr.Powers.AddRange(nChar.Race.Powers);
            if (nChar.Class.ClassPowers.ContainsKey(1))
            {
                foreach(List<Power> pow in nChar.Class.ClassPowers[1])
                {
                    if(pow.Count == 1)
                    {
                        chr.Powers.AddRange(pow);
                    }
                }
            }
            if (nChar.SubClass != null && nChar.SubClass.ClassPowers.ContainsKey(1))
            {
                foreach (List<Power> pow in nChar.SubClass.ClassPowers[1])
                {
                    if (pow.Count == 1)
                    {
                        chr.Powers.AddRange(pow);
                    }
                }
            }
            InventoryItem it = InventoryItem.SpawnItem(2.ToString("X20"));
            chr.Equipment.Add((int)InventorySlot.Chest, it);

            if (targetAccount.LoadCharacter(chr.CharacterName) != null)
            {
                return "A character with that name already exists";
            }
            if (!targetAccount.NewCharacter(chr))
            {
                return "Unable to attach character to account";
            }
            if (!targetAccount.SaveCharacter(chr))
            {
                return "Unable to save character";
            }
            return "Success: " + chr.CharacterName;
        }