Beispiel #1
0
 public MonsterSpawnSpot()
 {
     id = "";
     monster = null;
     interval = 0;
     deadTime = 0;
     count = 0;
     position = new Position (0, 0);
 }
Beispiel #2
0
            public MonsterData(Int32 monsterNo, MonsterData data)
            {
                MonsterNo = monsterNo;
                RoundId = data.RoundId;
                MonsterId = data.MonsterId;
                AppearType = data.AppearType;
                Prob = data.Prob;
                KillReward_PlayerExp = data.KillReward_PlayerExp;
                KillReward_CharacterExp = data.KillReward_CharacterExp;
                KillReward_ResourceId = data.KillReward_ResourceId;
                KillReward_Amount = data.KillReward_Amount;

                Base = MonsterBook.Find(MonsterId);
            }
Beispiel #3
0
    public void Update()
    {
        if (null != monster && MonsterData.State.Die == monster.state) {
            monster = null;
            deadTime = GameManager.Instance.currentTurn;
        }

        if (Player.Instance.sight > Vector2.Distance (position, Player.Instance.position)) {
            return;
        }
        if (null == monster && Player.Instance.position != position && (deadTime + interval < GameManager.Instance.currentTurn || 0 == deadTime)) {
            monster = MonsterManager.Instance.CreateInstance (id);
            monster.SetPosition(position);
        }
    }
Beispiel #4
0
 static public MonsterData GetMonsterDataFromNetwork(int id)
 {
     string message = CreateMessageGetMonsterDataFromNetwork(id);
     string result = SocketClient.send(message);
     JObject jo = (JObject)JsonConvert.DeserializeObject(result);
     MonsterData monsterData = new MonsterData();
     if (jo["type"].ToString() == "monster")
     {
         monsterData.id = Int32.Parse(jo["body"]["id"].ToString());
         monsterData.name = jo["body"]["name"].ToString();
         monsterData.hp = float.Parse(jo["body"]["hp"].ToString());
         monsterData.attack = float.Parse(jo["body"]["attack"].ToString());
         monsterData.defence = float.Parse(jo["body"]["defence"].ToString());
         monsterData.gold = Int32.Parse(jo["body"]["gold"].ToString());
     }
     return monsterData;
 }
Beispiel #5
0
 static public MonsterData GetMonsterData(int id)
 {
     string query = "SELECT * FROM MONSTER where id = " + id;
     reader = ExecuteQuery(query);
     MonsterData monster = new MonsterData();
     if (reader.Read())
     {
         monster.id = reader.GetInt32(0);
         monster.name = reader.GetString(1);
         monster.hp = reader.GetFloat(2);
         monster.attack = reader.GetFloat(3);
         monster.defence = reader.GetFloat(4);
         monster.gold = reader.GetInt32(5);
     }
     reader.Dispose();
     return monster;
 }
Beispiel #6
0
    void Awake()
    {
        if (instance == null)
        {
            instance = this;
            DontDestroyOnLoad(gameObject);

            playerData = Resources.Load("Data/PlayerData")as PlayerData;
            monsterData = Resources.Load("Data/MonsterData")as MonsterData;
            stageData = Resources.Load("Data/StageData")as StageData;
            equipmentData = Resources.Load("Data/EquipmentData")as EquipmentData;
            weaponData = Resources.Load("Data/WeaponData")as WeaponData;

        }
        else
        {
            Destroy(gameObject);
        }
    }
Beispiel #7
0
 public MonsterData CreateInstance()
 {
     MonsterData data = new MonsterData ();
     data.info = this;
     data.name = name;
     data.attack = attack;
     data.speed = speed;
     data.defense = defense;
     data.health = new Util.AutoRecoveryInt<Util.TurnCounter>();
     data.health.recovery = health.recovery;
     data.health.interval = health.interval;
     data.health.value = maxHealth;
     data.health.max = maxHealth;
     data.reward = reward.CreateInstance ();
     for (int i=0; i<equipments.Length; i++) {
         if(null != equipments[i])
         {
             data.EquipItem(equipments[i].CreateInstance() as EquipmentItemData, (Character.EquipPart)i);
         }
     }
     return data;
 }
Beispiel #8
0
 // Start is called before the first frame update
 void Start()
 {
     enemiesInRange = new List <GameObject>();
     lastShotTime   = Time.time;
     monsterData    = gameObject.GetComponentInChildren <MonsterData>();
 }
Beispiel #9
0
    public void init(UnitData md, TranscendData td, int[] tLevel, Player player)
    {
        _player = player;

        spDamageEffect.cachedGameObject.SetActive(false);

        _state = 0;

        leftNum = 0;

        lastActiveSkillUseSlotIndex = -1;
//		unitSlot.activeSkillState = STATE_ACTIVE_SKILL_COOLTIME;

        mon = null;

        blockThis = false;

        isClicked = false;

        isLocked = false;
        unitData = md;

        transcendData  = td;
        transcendLevel = tLevel;

        tfUnitName.text = md.name;

#if UNITY_EDITOR
//		Debug.Log(unitData.resource);
#endif

        monsterData = GameManager.info.monsterData[unitData.resource];

//		unitSlot.useSp = unitData.sp;
//		unitSlot.useSp -= (unitSlot.useSp * _player.summonSpPercent(unitData));

        if (player != null)
        {
            tfUseSp.text = Mathf.RoundToInt(unitSlot.useSp / player.maxSp * 100.0f) + "";              //Mathf.CeilToInt(unitSlot.useSp - 0.4f) + "";
        }
        else
        {
            tfUseSp.text = Mathf.RoundToInt(unitSlot.useSp / _player.maxSp * 100.0f) + "";              //Mathf.CeilToInt(unitSlot.useSp - 0.4f) + "";
        }


#if UNITY_EDITOR
        Debug.LogError("***** " + slotIndex + "  - icon: " + monsterData.resource);
#endif

        MonsterData.setUnitIcon(monsterData, spPetIcon, iconDepth);

        spPetIcon.MakePixelPerfect();
        spPetIcon.width = 102;

//		if( unitData.cooltime <= 0.1f) unitSlot.maxCoolTime = 0.0f;
//		else unitSlot.maxCoolTime = unitData.cooltime;

        spBackground.spriteName  = RareType.getRareBgSprite(md.rare);
        spFrameBorder.spriteName = RareType.getRareLineSprite(md.rare);

        updateSummonNum();

        goActiveSkillContainer.SetActive(false);


        spHpBar.cachedGameObject.SetActive(false);

        tfUseSp.enabled = true;

        resetCoolTime(true);

        resetActiveSkillCoolTime();
    }
Beispiel #10
0
 private void OnPushedBaseMonsterIcon(MonsterData tappedMonsterData)
 {
     this.ClosePanel(true);
 }
Beispiel #11
0
    // Construct with quest data
    public QuestMonster(QuestData.CustomMonster qm) : base()
    {
        Game game = Game.Get();

        cMonster = qm;

        // Get base derived monster type
        MonsterData baseObject = null;

        // Check for content data monster defined as base
        if (game.cd.monsters.ContainsKey(qm.baseMonster))
        {
            // Set base monster type
            derivedType = qm.baseMonster;
            baseObject  = game.cd.monsters[qm.baseMonster];
        }

        // If name not set use base type
        if (!qm.monsterName.KeyExists() && baseObject != null)
        {
            name = baseObject.name;
        }
        else
        {
            name = qm.monsterName;
        }

        // Initialise sets
        sets = new List <string>();

        // define data
        sectionName = qm.sectionName;
        priority    = 0;

        // Read traits from quest data or base type
        traits = qm.traits;
        if (traits.Length == 0 && baseObject != null)
        {
            traits = baseObject.traits;
        }

        // Read info from quest data or base type
        info = new StringKey(null, EventManager.OutputSymbolReplace(qm.info.Translate()), false);
        if (!qm.info.KeyExists() && baseObject != null)
        {
            info = baseObject.info;
        }

        image = qm.GetImagePath();
        if (image.Length == 0)
        {
            if (baseObject != null)
            {
                image = baseObject.image;
            }
        }
        else
        {
            image = Path.GetDirectoryName(game.quest.qd.questPath) + "/" + image;
        }

        // Read placement image from quest data or base type
        imagePlace = qm.GetImagePlacePath();
        if (imagePlace.Length == 0)
        {
            if (baseObject != null)
            {
                imagePlace = baseObject.image;
            }
            else
            {
                imagePlace = image;
            }
        }
        else
        {
            imagePlace = Path.GetDirectoryName(game.quest.qd.questPath) + "/" + imagePlace;
        }

        // Read activations  from quest data or base type
        activations = qm.activations;
        if (activations.Length == 0 && baseObject != null)
        {
            useMonsterTypeActivations = true;
        }

        healthBase    = qm.healthBase;
        healthPerHero = qm.healthPerHero;
        if (!qm.healthDefined && baseObject != null)
        {
            healthBase    = baseObject.healthBase;
            healthPerHero = baseObject.healthPerHero;
        }

        horror = qm.horror;
        if (!qm.horrorDefined && baseObject != null)
        {
            horror = baseObject.horror;
        }
        awareness = qm.awareness;
        if (!qm.awarenessDefined && baseObject != null)
        {
            awareness = baseObject.awareness;
        }
    }
Beispiel #12
0
    // Activate a monster
    virtual public bool ActivateMonster(Quest.Monster m)
    {
        List <ActivationData> adList = new List <ActivationData>();
        Game game = Game.Get();

        bool        customActivations = false;
        MonsterData md = m.monsterData;

        // Find out of this monster is quest specific
        QuestMonster qm = md as QuestMonster;

        if (qm != null)
        {
            // Get the base monster type
            if (game.cd.monsters.ContainsKey(qm.derivedType))
            {
                md = game.cd.monsters[qm.derivedType];
            }
            // Determine if the monster has quest specific activations
            customActivations = !qm.useMonsterTypeActivations;
        }

        // A monster with quest specific activations
        if (customActivations)
        {
            if (!qm.useMonsterTypeActivations)
            {
                adList = new List <ActivationData>();
                // Get all custom activations
                foreach (string s in qm.activations)
                {
                    // Find the activation in quest data
                    if (game.quest.qd.components.ContainsKey("Activation" + s) &&
                        game.quest.vars.Test((game.quest.qd.components["Activation" + s] as QuestData.Activation).tests)
                        )
                    {
                        adList.Add(new QuestActivation(game.quest.qd.components["Activation" + s] as QuestData.Activation));
                    }
                    // Otherwise look for the activation in content data
                    else if (game.cd.activations.ContainsKey("MonsterActivation" + s))
                    {
                        adList.Add(game.cd.activations["MonsterActivation" + s]);
                    }
                    else // Invalid activation
                    {
                        game.quest.log.Add(new Quest.LogEntry("Warning: Unable to find activation: " + s + " for monster type: " + m.monsterData.sectionName, true));
                    }
                }
            }
        }
        else // Content Data activations only
        {
            // Find all possible activations
            foreach (KeyValuePair <string, ActivationData> kv in game.cd.activations)
            {
                // Is this activation for this monster type? (replace "Monster" with "MonsterActivation", ignore specific variety)
                if (kv.Key.IndexOf("MonsterActivation" + md.sectionName.Substring("Monster".Length)) == 0)
                {
                    adList.Add(kv.Value);
                }
            }
            // Search for additional common activations
            foreach (string s in md.activations)
            {
                if (game.cd.activations.ContainsKey("MonsterActivation" + s))
                {
                    adList.Add(game.cd.activations["MonsterActivation" + s]);
                }
                else
                {
                    ValkyrieDebug.Log("Warning: Unable to find activation: " + s + " for monster type: " + md.sectionName);
                }
            }
        }

        // Check for no activations
        if (adList.Count == 0)
        {
            ValkyrieDebug.Log("Error: Unable to find any activation data for monster type: " + md.name);
            Application.Quit();
        }

        // No current activation
        if (m.currentActivation == null)
        {
            // Pick a random activation
            ActivationData activation = adList[Random.Range(0, adList.Count)];
            m.NewActivation(activation);
        }

        // MoM has a special activation
        if (game.gameType is MoMGameType)
        {
            m.masterStarted = true;
            new ActivateDialogMoM(m);
            return(false);
        }

        // If no minion activation just do master
        if (m.currentActivation.ad.minionActions.fullKey.Length == 0)
        {
            m.minionStarted = true;
            m.masterStarted = true;
            new ActivateDialog(m, true, true);
            return(false);
        }

        // If no master activation just do minion
        if (m.currentActivation.ad.masterActions.fullKey.Length == 0)
        {
            m.minionStarted = true;
            m.masterStarted = true;
            new ActivateDialog(m, false, true);
            return(false);
        }

        // Random pick Minion or master (both available)
        m.minionStarted = Random.Range(0, 2) == 0;

        // If order specificed then use that instead
        if (m.currentActivation.ad.masterFirst)
        {
            m.minionStarted = false;
        }
        if (m.currentActivation.ad.minionFirst)
        {
            m.minionStarted = true;
        }

        // Master is opposite of minion as this is the first activation
        m.masterStarted = !m.minionStarted;

        // Create activation window
        new ActivateDialog(m, m.masterStarted);

        // More groups unactivated
        return(false);
    }
Beispiel #13
0
 // Use this for initialization
 void Start()
 {
     monsterData     = GameObject.FindGameObjectWithTag("Player").GetComponent <MonsterData>();
     AgeText.text    = monsterData.age.ToString();
     WeightText.text = monsterData.weight.ToString();
 }
Beispiel #14
0
        public void SetCfg(MonsterData cfg)
        {
            m_monsterData = cfg;
            m_monsterId = (uint)m_monsterData.id;//monster,mercenary是服务器同步下来,dummy是本地赋值
            level = (byte)cfg.level;
            hp = (uint)cfg.hpBase;

            curHp = hp;
            //if (LanguageData.dataMap.ContainsKey(m_monsterData.nameCode))头上显示名字
            //{
            //    name = LanguageData.dataMap[m_monsterData.nameCode].content;
            //}
            SetIntAttr("aiId", cfg.aiId);
            SetIntAttr("scaleRadius", cfg.scaleRadius);
            SetIntAttr("speed", cfg.speed);

            SetIntAttr("hpBase", cfg.hpBase);

            SetIntAttr("attackBase", cfg.attackBase);

            SetIntAttr("defenseBase", 0);

            SetIntAttr("hp", cfg.hpBase);
            SetIntAttr("atk", cfg.attackBase);
            SetIntAttr("def", 0);

            SetDoubleAttr("hitRate", cfg.extraHitRate * 0.0001f);
            SetDoubleAttr("critRate", cfg.extraCritRate * 0.0001f);
            SetDoubleAttr("trueStrikeRate", cfg.extraTrueStrikeRate * 0.0001f);
            SetDoubleAttr("antiDefenseRate", cfg.extraAntiDefenceRate * 0.0001f);
            SetDoubleAttr("defenceRate", cfg.extraDefenceRate * 0.0001f);
            SetDoubleAttr("missRate", cfg.missRate * 0.0001f);
            SetDoubleAttr("damageReduceRate", 0.0f);
            if (cfg.showHitAct > 0)
            {
                stateFlag = Mogo.Util.Utils.BitSet(stateFlag, 13);
            }
        }
Beispiel #15
0
    public void  SetDetail(int pid)
    {
        ConfigDataType type = DataCore.getDataType(pid);

        stars.gameObject.SetActive(true);
        object tObj = null;

        switch (type)
        {
        case ConfigDataType.Monster:
            tObj = Core.Data.monManager.getMonsterByNum(pid);
            MonsterData tMdata = tObj as MonsterData;
            if (tMdata != null)
            {
                lblName.text = tMdata.name;
            }
            AtlasMgr.mInstance.SetHeadSprite(spIcon, pid.ToString());
            spIcon.spriteName = pid.ToString();
            stars.SetStar(Core.Data.monManager.getMonsterByNum(pid).star);
            break;

        case ConfigDataType.Item:
            tObj = Core.Data.itemManager.getItemData(pid);
            ItemData tData = tObj as ItemData;
            if (tData.type == (int)ItemType.Stone)
            {
                stars.gameObject.SetActive(false);
            }
            if (tData != null)
            {
                lblName.text = tData.name;
            }
            spIcon.atlas      = AtlasMgr.mInstance.itemAtlas;
            spIcon.spriteName = pid.ToString();
            stars.SetStar(Core.Data.itemManager.getItemData(pid).star);
            break;

        case ConfigDataType.Equip:
            tObj = Core.Data.EquipManager.getEquipConfig(pid);
            EquipData eqData = tObj as EquipData;
            if (eqData != null)
            {
                lblName.text = eqData.name;
            }
            spIcon.atlas      = AtlasMgr.mInstance.equipAtlas;
            spIcon.spriteName = pid.ToString();
            stars.SetStar(Core.Data.EquipManager.getEquipConfig(pid).star);
            break;

        case ConfigDataType.Gems:
            tObj = Core.Data.gemsManager.getGemData(pid);
            GemData tGdata = tObj as GemData;
            if (tGdata != null)
            {
                lblName.text = tGdata.name;
            }
            spIcon.atlas      = AtlasMgr.mInstance.commonAtlas;
            spIcon.spriteName = Core.Data.gemsManager.getGemData(pid).anime2D;
            stars.SetStar(Core.Data.gemsManager.getGemData(pid).star);
            break;

        case ConfigDataType.Frag:
            SoulData data = Core.Data.soulManager.GetSoulConfigByNum(pid);
            if (data != null)
            {
                lblName.text = data.name;
            }
            AtlasMgr.mInstance.SetHeadSprite(spIcon, data.updateId.ToString());
            stars.SetStar(Core.Data.soulManager.GetSoulConfigByNum(pid).star);
            break;

        default:
            RED.LogError("reward item  not found  : " + pid);
            break;
        }

        if (pid == 110031)
        {
            lblName.text = Core.Data.stringManager.getString(10006);
        }

        spIcon.width  = 65;
        spIcon.height = 65;
    }
Beispiel #16
0
    public override void OnInspectorGUI()
    {
        //base.OnInspectorGUI();
        Cell cell = (Cell)target;
        int  t    = cell.id;

        cell.id = EditorGUILayout.IntField("id", cell.id);
        if (cell.id > LoadResources.maxMonster || cell.id < (int)CellType.add_attack_10)
        {
            cell.id = t;
        }
        EditorGUILayout.PropertyField(m_Monster);
        EditorGUILayout.PropertyField(m_Item);
        if (t != cell.id)
        {
            if (cell.IsMonster())
            {
                MonsterData m       = Sql.GetMonsterData(cell.id);
                Monster     monster = cell.GetComponent <Monster>();
                monster.id = cell.id;
                monster.hpComponent.SetHp(m.hp);
                monster.characterName = m.name;
                monster.SetAttack(m.attack);
                monster.SetDefence(m.defence);
                monster.gold = m.gold;
            }
            else if (cell.IsItem())
            {
                ItemData m    = Sql.GetItemData(cell.id + 9);
                Item     item = cell.GetComponent <Item>();
                item.id         = cell.id;
                item.addHp      = m.addHp;
                item.itemName   = m.name;
                item.addAttack  = m.addAttack;
                item.addDefence = m.addDefence;
                item.addGold    = m.addGold;
            }
        }

        if (t == cell.id)
        {
            return;
        }
        if (cell.id == (int)CellType.ROAD && t != (int)CellType.ROAD)
        {
            Color color = cell.GetComponent <SpriteRenderer>().color;
            cell.GetComponent <SpriteRenderer>().color -= new Color(0, 0, 0, color.a);
        }
        else if (cell.id != (int)CellType.ROAD && t == (int)CellType.ROAD)
        {
            Color color = cell.GetComponent <SpriteRenderer>().color;
            cell.GetComponent <SpriteRenderer>().color -= new Color(0, 0, 0, color.a - 1);
        }

        if (cell.IsMonster())
        {
            cell.GetComponent <SpriteRenderer>().sprite = LoadResources.monsters[cell.id - 1];
        }
        else if (cell.IsWall())
        {
            cell.GetComponent <SpriteRenderer>().sprite = LoadResources.wall;
        }
        else if (cell.IsUpFloor())
        {
            cell.GetComponent <SpriteRenderer>().sprite = LoadResources.up_floor;
        }
        else if (cell.IsDownFloor())
        {
            cell.GetComponent <SpriteRenderer>().sprite = LoadResources.down_floor;
        }
        else if (cell.id == (int)CellType.add_attack_10)
        {
            cell.GetComponent <SpriteRenderer>().sprite = LoadResources.add_attack_10;
        }
        else if (cell.id == (int)CellType.add_defence_1)
        {
            cell.GetComponent <SpriteRenderer>().sprite = LoadResources.add_defence_1;
        }
        else if (cell.id == (int)CellType.add_hp_100)
        {
            cell.GetComponent <SpriteRenderer>().sprite = LoadResources.add_hp_100;
        }
        else if (cell.id == (int)CellType.add_hp_1000)
        {
            cell.GetComponent <SpriteRenderer>().sprite = LoadResources.add_hp_1000;
        }
        else if (cell.id == (int)CellType.add_hp_10000)
        {
            cell.GetComponent <SpriteRenderer>().sprite = LoadResources.add_hp_10000;
        }
    }
Beispiel #17
0
 void Start()
 {
     data = new MonsterData(2, "史莱姆", 20, 1, 20, 0, 1, StanceEnum.Lowland, 1);
 }
Beispiel #18
0
    void Start()
    {
        //		Debug.Log (" id = " + myId);



        if (myId != 0)
        {
            if ((int)(myId / 1000) == 9)
            {
                fateD    = Core.Data.fateManager.getFateDataFromID(myId);
                equipD   = null;
                monsterD = null;
            }
            else
            {
                switch (DataCore.getDataType(myId))
                {
                case ConfigDataType.Fate:
                    fateD    = Core.Data.fateManager.getFateDataFromID(myId);
                    equipD   = null;
                    monsterD = null;
                    Debug.Log(" fate   case    = " + fateD);
                    break;

                case ConfigDataType.Equip:
                    equipD   = Core.Data.EquipManager.getEquipConfig(myId);
                    monsterD = null;
                    fateD    = null;
                    break;

                case ConfigDataType.Monster:
                    monsterD = Core.Data.monManager.getMonsterByNum(myId);
                    equipD   = null;
                    fateD    = null;
                    break;

                default:
                    fateD    = null;
                    monsterD = null;
                    equipD   = null;
                    break;
                }
            }
        }

        if (fateD != null)
        {
            lblTitle.text = fateD.name;
            InitHeadItem();
            defaultItem = headItem [0];
            defaultItem.mainBg.spriteName = slectName;
            InitFateItem(defaultItem);
            spArrow.transform.localPosition = new Vector3(-125, spArrow.transform.localPosition.y, 0);
        }
        else if (equipD != null)
        {
            lblTitle.text = equipD.name;
            InitHeadItem();
            defaultItem = headItem [0];
            defaultItem.mainBg.spriteName = slectName;
            InitFateItem(defaultItem);
            spArrow.transform.localPosition = new Vector3(-125, spArrow.transform.localPosition.y, 0);
        }
        else if (monsterD != null)
        {
            lblTitle.text = monsterD.name;
            InitHeadItem();
            defaultItem = headItem [0];
            defaultItem.mainBg.spriteName = slectName;
            InitFateItem(defaultItem);
            spArrow.transform.localPosition = new Vector3(-125, spArrow.transform.localPosition.y, 0);
        }
    }
Beispiel #19
0
 public void SaveMonsterData(MonsterData data)
 {
     current_monsterData = data;
 }
Beispiel #20
0
        public void refresh(string fielpath)
        {
            if (fielpath.Length != 0)
            {
                //WWW www = new WWW(fielpath);
                //yield return www;

                //MemoryStream ms = new MemoryStream(www.bytes);
                TextAsset    txt = Resources.Load(fielpath) as TextAsset;
                MemoryStream ms  = new MemoryStream(txt.bytes);

                StructArry pbi     = Serializer.DeserializeWithLengthPrefix <StructArry>(ms, PrefixStyle.None);
                Type       type    = pbi.GetType();
                string     strname = type.Name;
                switch (strname)
                {
                case "MsgAttackData":
                    MsgAttackData struct1 = pbi as MsgAttackData;
                    DataPool = struct1.struct_data as List <Struct>;
                    for (int i = 0; i < DataPool.Count; i++)
                    {
                        AttackData dt = DataPool[i] as AttackData;
                        DataStore.Add((int)dt.id, DataPool[i]);
                    }
                    break;

                case "MsgAwakeningSkill":
                    MsgAwakeningSkill struct2 = pbi as MsgAwakeningSkill;
                    DataPool = struct2.struct_data as List <Struct>;
                    for (int i = 0; i < DataPool.Count; i++)
                    {
                        AwakeningSkill dt = DataPool[i] as AwakeningSkill;
                        DataStore.Add((int)dt.id, DataPool[i]);
                    }
                    break;

                case "MsgAwakeningSkillLevel":
                    MsgAwakeningSkillLevel struct3 = pbi as MsgAwakeningSkillLevel;
                    DataPool = struct3.struct_data as List <Struct>;
                    for (int i = 0; i < DataPool.Count; i++)
                    {
                        AwakeningSkillLevel dt = DataPool[i] as AwakeningSkillLevel;
                        DataStore.Add((int)dt.id, DataPool[i]);
                    }
                    break;

                case "MsgElementFactor":
                    MsgElementFactor struct4 = pbi as MsgElementFactor;
                    DataPool = struct4.struct_data as List <Struct>;
                    for (int i = 0; i < DataPool.Count; i++)
                    {
                        ElementFactor dt = DataPool[i] as ElementFactor;
                        DataStore.Add((int)dt.id, DataPool[i]);
                    }
                    break;

                case "MsgBuffData":
                    MsgBuffData struct5 = pbi as MsgBuffData;
                    DataPool = struct5.struct_data as List <Struct>;
                    for (int i = 0; i < DataPool.Count; i++)
                    {
                        BuffData dt = DataPool[i] as BuffData;
                        DataStore.Add((int)dt.id, DataPool[i]);
                    }
                    break;

                case "MsgCombinationData":
                    MsgCombinationData struct6 = pbi as MsgCombinationData;
                    DataPool = struct6.struct_data as List <Struct>;
                    for (int i = 0; i < DataPool.Count; i++)
                    {
                        CombinationData dt = DataPool[i] as CombinationData;
                        DataStore.Add((int)dt.id, DataPool[i]);
                    }
                    break;

                case "MsgConstData":
                    MsgConstData struct7 = pbi as MsgConstData;
                    DataPool = struct7.struct_data as List <Struct>;
                    for (int i = 0; i < DataPool.Count; i++)
                    {
                        ConstData dt = DataPool[i] as ConstData;
                        DataStore.Add((int)dt.id, DataPool[i]);
                    }
                    break;

                case "MsgCurrency":
                    MsgCurrency struct8 = pbi as MsgCurrency;
                    DataPool = struct8.struct_data as List <Struct>;
                    for (int i = 0; i < DataPool.Count; i++)
                    {
                        Currency dt = DataPool[i] as Currency;
                        DataStore.Add((int)dt.id, DataPool[i]);
                    }
                    break;

                case "MsgDungeon":
                    MsgDungeon struct9 = pbi as MsgDungeon;
                    DataPool = struct9.struct_data as List <Struct>;
                    for (int i = 0; i < DataPool.Count; i++)
                    {
                        Dungeon dt = DataPool[i] as Dungeon;
                        DataStore.Add((int)dt.id, DataPool[i]);
                    }
                    break;

                case "MsgEnemyData":
                    MsgEnemyData struct10 = pbi as MsgEnemyData;
                    DataPool = struct10.struct_data as List <Struct>;
                    for (int i = 0; i < DataPool.Count; i++)
                    {
                        EnemyData dt = DataPool[i] as EnemyData;
                        DataStore.Add((int)dt.id, DataPool[i]);
                    }
                    break;

                case "MsgEvaluateBonus":
                    MsgEvaluateBonus struct11 = pbi as MsgEvaluateBonus;
                    DataPool = struct11.struct_data as List <Struct>;
                    for (int i = 0; i < DataPool.Count; i++)
                    {
                        EvaluateBonus dt = DataPool[i] as EvaluateBonus;
                        DataStore.Add((int)dt.id, DataPool[i]);
                    }
                    break;

                case "MsgFieldEffect":
                    MsgFieldEffect struct12 = pbi as MsgFieldEffect;
                    DataPool = struct12.struct_data as List <Struct>;
                    for (int i = 0; i < DataPool.Count; i++)
                    {
                        FieldEffect dt = DataPool[i] as FieldEffect;
                        DataStore.Add((int)dt.id, DataPool[i]);
                    }
                    break;

                case "MsgHeroData":
                    MsgHeroData struct13 = pbi as MsgHeroData;
                    DataPool = struct13.struct_data as List <Struct>;
                    for (int i = 0; i < DataPool.Count; i++)
                    {
                        HeroData dt = DataPool[i] as HeroData;
                        DataStore.Add((int)dt.id, DataPool[i]);
                    }
                    break;

                case "MsgHeroLvData":
                    MsgHeroLvData struct14 = pbi as MsgHeroLvData;
                    DataPool = struct14.struct_data as List <Struct>;
                    for (int i = 0; i < DataPool.Count; i++)
                    {
                        HeroLvData dt = DataPool[i] as HeroLvData;
                        DataStore.Add((int)dt.level, DataPool[i]);
                    }
                    break;

                case "MsgHeroEvolution":
                    MsgHeroEvolution struct15 = pbi as MsgHeroEvolution;
                    DataPool = struct15.struct_data as List <Struct>;
                    for (int i = 0; i < DataPool.Count; i++)
                    {
                        HeroEvolution dt = DataPool[i] as HeroEvolution;
                        DataStore.Add((int)dt.id, DataPool[i]);
                    }
                    break;

                case "MsgPotentialData":
                    MsgPotentialData struct16 = pbi as MsgPotentialData;
                    DataPool = struct16.struct_data as List <Struct>;
                    for (int i = 0; i < DataPool.Count; i++)
                    {
                        PotentialData dt = DataPool[i] as PotentialData;
                        DataStore.Add((int)dt.element, DataPool[i]);
                    }
                    break;

                case "MsgItemData":
                    MsgItemData struct17 = pbi as MsgItemData;
                    DataPool = struct17.struct_data as List <Struct>;
                    for (int i = 0; i < DataPool.Count; i++)
                    {
                        ItemData dt = DataPool[i] as ItemData;
                        DataStore.Add((int)dt.id, DataPool[i]);
                    }
                    break;

                case "MsgLeaderSkill":
                    MsgLeaderSkill struct18 = pbi as MsgLeaderSkill;
                    DataPool = struct18.struct_data as List <Struct>;
                    for (int i = 0; i < DataPool.Count; i++)
                    {
                        LeaderSkill dt = DataPool[i] as LeaderSkill;
                        DataStore.Add((int)dt.id, DataPool[i]);
                    }
                    break;

                case "MsgMonsterData":
                    MsgMonsterData struct19 = pbi as MsgMonsterData;
                    DataPool = struct19.struct_data as List <Struct>;
                    for (int i = 0; i < DataPool.Count; i++)
                    {
                        MonsterData dt = DataPool[i] as MonsterData;
                        DataStore.Add((int)dt.id, DataPool[i]);
                    }
                    break;

                case "MsgMonsterSkill":
                    MsgMonsterSkill struct20 = pbi as MsgMonsterSkill;
                    DataPool = struct20.struct_data as List <Struct>;
                    for (int i = 0; i < DataPool.Count; i++)
                    {
                        MonsterSkill dt = DataPool[i] as MonsterSkill;
                        DataStore.Add((int)dt.id, DataPool[i]);
                    }
                    break;

                case "MsgNormalSkill":
                    MsgNormalSkill struct21 = pbi as MsgNormalSkill;
                    DataPool = struct21.struct_data as List <Struct>;
                    for (int i = 0; i < DataPool.Count; i++)
                    {
                        NormalSkill dt = DataPool[i] as NormalSkill;
                        DataStore.Add((int)dt.id, DataPool[i]);
                    }
                    break;

                case "MsgNormalSkillLvUp":
                    MsgNormalSkillLvUp struct22 = pbi as MsgNormalSkillLvUp;
                    DataPool = struct22.struct_data as List <Struct>;
                    for (int i = 0; i < DataPool.Count; i++)
                    {
                        NormalSkillLvUp dt = DataPool[i] as NormalSkillLvUp;
                        DataStore.Add((int)dt.id, DataPool[i]);
                    }
                    break;

                case "MsgRoleData":
                    MsgRoleData struct23 = pbi as MsgRoleData;
                    DataPool = struct23.struct_data as List <Struct>;
                    for (int i = 0; i < DataPool.Count; i++)
                    {
                        RoleData dt = DataPool[i] as RoleData;
                        DataStore.Add((int)dt.level, DataPool[i]);
                    }
                    break;

                case "MsgRuneData":
                    MsgRuneData struct24 = pbi as MsgRuneData;
                    DataPool = struct24.struct_data as List <Struct>;
                    for (int i = 0; i < DataPool.Count; i++)
                    {
                        RuneData dt = DataPool[i] as RuneData;
                        DataStore.Add((int)dt.id, DataPool[i]);
                    }
                    break;

                case "MsgRuneSet":
                    MsgRuneSet struct25 = pbi as MsgRuneSet;
                    DataPool = struct25.struct_data as List <Struct>;
                    for (int i = 0; i < DataPool.Count; i++)
                    {
                        RuneSet dt = DataPool[i] as RuneSet;
                        DataStore.Add((int)dt.id, DataPool[i]);
                    }
                    break;

                case "MsgRuneEnhance":
                    MsgRuneEnhance struct26 = pbi as MsgRuneEnhance;
                    DataPool = struct26.struct_data as List <Struct>;
                    for (int i = 0; i < DataPool.Count; i++)
                    {
                        RuneEnhance dt = DataPool[i] as RuneEnhance;
                        DataStore.Add((int)dt.level, DataPool[i]);
                    }
                    break;

                case "MsgRuneSynchro":
                    MsgRuneSynchro struct27 = pbi as MsgRuneSynchro;
                    DataPool = struct27.struct_data as List <Struct>;
                    for (int i = 0; i < DataPool.Count; i++)
                    {
                        RuneSynchro dt = DataPool[i] as RuneSynchro;
                        DataStore.Add((int)dt.id, DataPool[i]);
                    }
                    break;

                case "MsgSpecialSkill":
                    MsgSpecialSkill struct28 = pbi as MsgSpecialSkill;
                    DataPool = struct28.struct_data as List <Struct>;
                    for (int i = 0; i < DataPool.Count; i++)
                    {
                        SpecialSkill dt = DataPool[i] as SpecialSkill;
                        DataStore.Add((int)dt.id, DataPool[i]);
                    }
                    break;

                case "MsgSpecialSkillLvUp":
                    MsgSpecialSkillLvUp struct29 = pbi as MsgSpecialSkillLvUp;
                    DataPool = struct29.struct_data as List <Struct>;
                    for (int i = 0; i < DataPool.Count; i++)
                    {
                        SpecialSkillLvUp dt = DataPool[i] as SpecialSkillLvUp;
                        DataStore.Add((int)dt.id, DataPool[i]);
                    }
                    break;

                case "MsgDecisionFactor":
                    MsgDecisionFactor struct30 = pbi as MsgDecisionFactor;
                    DataPool = struct30.struct_data as List <Struct>;
                    for (int i = 0; i < DataPool.Count; i++)
                    {
                        DecisionFactor dt = DataPool[i] as DecisionFactor;
                        DataStore.Add((int)dt.id, DataPool[i]);
                    }
                    break;

                case "MsgTaskData":
                    MsgTaskData struct31 = pbi as MsgTaskData;
                    DataPool = struct31.struct_data as List <Struct>;
                    for (int i = 0; i < DataPool.Count; i++)
                    {
                        TaskData dt = DataPool[i] as TaskData;
                        DataStore.Add((int)dt.id, DataPool[i]);
                    }
                    break;

                case "MsgHeroText":
                    MsgHeroText struct32 = pbi as MsgHeroText;
                    DataPool = struct32.struct_data as List <Struct>;
                    for (int i = 0; i < DataPool.Count; i++)
                    {
                        HeroText dt = DataPool[i] as HeroText;
                        Util.TextDic.Add(Util.GetConfigString(dt.name), Util.GetConfigString(dt.textDes));
                    }
                    break;

                case "MsgDungeonText":
                    MsgDungeonText struct33 = pbi as MsgDungeonText;
                    DataPool = struct33.struct_data as List <Struct>;
                    for (int i = 0; i < DataPool.Count; i++)
                    {
                        DungeonText dt = DataPool[i] as DungeonText;
                        Util.TextDic.Add(Util.GetConfigString(dt.name), Util.GetConfigString(dt.textDes));
                    }
                    break;

                case "MsgMonsterText":
                    MsgMonsterText struct34 = pbi as MsgMonsterText;
                    DataPool = struct34.struct_data as List <Struct>;
                    for (int i = 0; i < DataPool.Count; i++)
                    {
                        MonsterText dt = DataPool[i] as MonsterText;
                        Util.TextDic.Add(Util.GetConfigString(dt.name), Util.GetConfigString(dt.textDes));
                    }
                    break;

                case "MsgFieldText":
                    MsgFieldText struct35 = pbi as MsgFieldText;
                    DataPool = struct35.struct_data as List <Struct>;
                    for (int i = 0; i < DataPool.Count; i++)
                    {
                        FieldText dt = DataPool[i] as FieldText;
                        Util.TextDic.Add(Util.GetConfigString(dt.name), Util.GetConfigString(dt.textDes));
                    }
                    break;

                case "MsgCombinationText":
                    MsgCombinationText struct36 = pbi as MsgCombinationText;
                    DataPool = struct36.struct_data as List <Struct>;
                    for (int i = 0; i < DataPool.Count; i++)
                    {
                        CombinationText dt = DataPool[i] as CombinationText;
                        Util.TextDic.Add(Util.GetConfigString(dt.name), Util.GetConfigString(dt.textDes));
                    }
                    break;

                case "MsgSkillText":
                    MsgSkillText struct37 = pbi as MsgSkillText;
                    DataPool = struct37.struct_data as List <Struct>;
                    for (int i = 0; i < DataPool.Count; i++)
                    {
                        SkillText dt = DataPool[i] as SkillText;
                        Util.TextDic.Add(Util.GetConfigString(dt.name), Util.GetConfigString(dt.textDes));
                    }
                    break;

                case "MsgCurrencyText":
                    MsgCurrencyText struct38 = pbi as MsgCurrencyText;
                    DataPool = struct38.struct_data as List <Struct>;
                    for (int i = 0; i < DataPool.Count; i++)
                    {
                        CurrencyText dt = DataPool[i] as CurrencyText;
                        Util.TextDic.Add(Util.GetConfigString(dt.name), Util.GetConfigString(dt.textDes));
                    }
                    break;

                case "MsgBuffText":
                    MsgBuffText struct39 = pbi as MsgBuffText;
                    DataPool = struct39.struct_data as List <Struct>;
                    for (int i = 0; i < DataPool.Count; i++)
                    {
                        BuffText dt = DataPool[i] as BuffText;
                        Util.TextDic.Add(Util.GetConfigString(dt.name), Util.GetConfigString(dt.textDes));
                    }
                    break;

                case "MsgItemText":
                    MsgItemText struct40 = pbi as MsgItemText;
                    DataPool = struct40.struct_data as List <Struct>;
                    for (int i = 0; i < DataPool.Count; i++)
                    {
                        ItemText dt = DataPool[i] as ItemText;
                        Util.TextDic.Add(Util.GetConfigString(dt.name), Util.GetConfigString(dt.textDes));
                    }
                    break;

                case "MsgRuneText":
                    MsgRuneText struct41 = pbi as MsgRuneText;
                    DataPool = struct41.struct_data as List <Struct>;
                    for (int i = 0; i < DataPool.Count; i++)
                    {
                        RuneText dt = DataPool[i] as RuneText;
                        Util.TextDic.Add(Util.GetConfigString(dt.name), Util.GetConfigString(dt.textDes));
                    }
                    break;

                case "MsgTaskText":
                    MsgTaskText struct42 = pbi as MsgTaskText;
                    DataPool = struct42.struct_data as List <Struct>;
                    for (int i = 0; i < DataPool.Count; i++)
                    {
                        TaskText dt = DataPool[i] as TaskText;
                        Util.TextDic.Add(Util.GetConfigString(dt.name), Util.GetConfigString(dt.textDes));
                    }
                    break;

                case "MsgWorldData":
                    MsgWorldData struct43 = pbi as MsgWorldData;
                    DataPool = struct43.struct_data as List <Struct>;
                    for (int i = 0; i < DataPool.Count; i++)
                    {
                        WorldData dt = DataPool[i] as WorldData;
                        DataStore.Add((int)dt.id, DataPool[i]);
                    }
                    break;

                case "MsgAirRaidData":
                    MsgAirRaidData struct44 = pbi as MsgAirRaidData;
                    DataPool = struct44.struct_data as List <Struct>;
                    for (int i = 0; i < DataPool.Count; i++)
                    {
                        AirRaidData dt = DataPool[i] as AirRaidData;
                        DataStore.Add((int)dt.id, DataPool[i]);
                    }
                    break;

                case "MsgTalentData":
                    MsgTalentData struct45 = pbi as MsgTalentData;
                    DataPool = struct45.struct_data as List <Struct>;
                    for (int i = 0; i < DataPool.Count; i++)
                    {
                        TalentData dt = DataPool[i] as TalentData;
                        DataStore.Add((int)dt.id, DataPool[i]);
                    }
                    break;

                case "MsgSummonData":
                    MsgSummonData struct46 = pbi as MsgSummonData;
                    DataPool = struct46.struct_data as List <Struct>;
                    for (int i = 0; i < DataPool.Count; i++)
                    {
                        SummonData dt = DataPool[i] as SummonData;
                        DataStore.Add((int)dt.id, DataPool[i]);
                    }
                    break;

                case "MsgSummonPrize":
                    MsgSummonPrize struct47 = pbi as MsgSummonPrize;
                    DataPool = struct47.struct_data as List <Struct>;
                    for (int i = 0; i < DataPool.Count; i++)
                    {
                        SummonPrize dt = DataPool[i] as SummonPrize;
                        DataStore.Add((int)dt.id, DataPool[i]);
                    }
                    break;

                case "MsgStarWeight":
                    MsgStarWeight struct48 = pbi as MsgStarWeight;
                    DataPool = struct48.struct_data as List <Struct>;
                    for (int i = 0; i < DataPool.Count; i++)
                    {
                        StarWeight dt = DataPool[i] as StarWeight;
                        DataStore.Add((int)dt.id, DataPool[i]);
                    }
                    break;

                case "MsgSpecialEffect":
                    MsgSpecialEffect struct49 = pbi as MsgSpecialEffect;
                    DataPool = struct49.struct_data as List <Struct>;
                    for (int i = 0; i < DataPool.Count; i++)
                    {
                        SpecialEffect dt = DataPool[i] as SpecialEffect;
                        DataStore.Add((int)dt.id, DataPool[i]);
                    }
                    break;

                case "MsgFlyingEffect":
                    MsgFlyingEffect struct50 = pbi as MsgFlyingEffect;
                    DataPool = struct50.struct_data as List <Struct>;
                    for (int i = 0; i < DataPool.Count; i++)
                    {
                        FlyingEffect dt = DataPool[i] as FlyingEffect;
                        DataStore.Add((int)dt.id, DataPool[i]);
                    }
                    break;

                case "MsgDistanceFactor":
                    MsgDistanceFactor struct51 = pbi as MsgDistanceFactor;
                    DataPool = struct51.struct_data as List <Struct>;
                    for (int i = 0; i < DataPool.Count; i++)
                    {
                        DistanceFactor dt = DataPool[i] as DistanceFactor;
                        DataStore.Add((int)dt.id, DataPool[i]);
                    }
                    break;
                }
            }
        }
Beispiel #21
0
 /// <summary>
 /// 將字典傳入,依json表設定資料
 /// </summary>
 public static void SetData(Dictionary<int, List<MonsterData>> _groupDic,Dictionary<int,MonsterData> _dic)
 {
     string jsonStr = Resources.Load<TextAsset>("Json/Monster").ToString();
     JsonData jd = JsonMapper.ToObject(jsonStr);
     JsonData items = jd["Monster"];
     for (int i = 0; i < items.Count; i++)
     {
         MonsterData armorData = new MonsterData(items[i]);
         int id = int.Parse(items[i]["ID"].ToString());
         int groupID = int.Parse(items[i]["Group"].ToString());
         _dic.Add(id, armorData);
         if (_groupDic.ContainsKey(groupID))
             _groupDic[groupID].Add(armorData);
         else
         {
             List<MonsterData> eventDataList = new List<MonsterData>();
             eventDataList.Add(armorData);
             _groupDic.Add(groupID, eventDataList);
         }
     }
 }
Beispiel #22
0
 public void NotifyMonsterUpdateData(int monsterId, MonsterData monsterData)
 {
     _packets.Add(_packetBuilder.BuildMonsterUpdateData(monsterId, monsterData));
 }
        internal Response_PvE_EnterDungeon(SecurePacket packet)
            : base(packet)
        {
            if (ResultCodeNo != ResultCode.Ok)
                return;

            Int32 count = packet.GetInt32();
            while (count-- > 0)
            {
                RoundData round = new RoundData();
                round.RoundId = packet.GetInt32();
                round.Name = packet.GetStringFromUtf16();
                round.IsBossRound = packet.GetBoolean();
                round.Monsters = new List<MonsterData>();
                Rounds.Add(round);

                Int32 monsterCount = packet.GetInt32();
                while (monsterCount-- > 0)
                {
                    MonsterData monster = new MonsterData();
                    monster.MonsterNo = packet.GetInt32();
                    monster.MonsterId = packet.GetInt32();
                    monster.Name = packet.GetStringFromUtf16();
                    monster.GradeId = packet.GetInt32();
                    monster.PromotionId = packet.GetInt32();
                    monster.Level = packet.GetInt32();
                    round.Monsters.Add(monster);
                }
            }
        }
Beispiel #24
0
        /*********
        ** Command Methods
        *********/
        public void SpawnEntity(string command, string[] args)
        {
            if (args.Length == 0 || args[0].Equals("help"))
            {
                Monitor.Log($"Usage: monster_spawn \"Monster Name\" [posX] [posY] [amount]" +
                            $"\n\nUses Farmer's coordinates if none or '{config.FarmerPositionCharacter}' was given." +
                            $"\n\nExample: monster_spawn \"Green Slime\" 32 23 4" +
                            $"\nspawns four Green Slimes at coordinates 32|23" +
                            $"\nuse monster_list for a list of available monster names.", LogLevel.Info);
                return;
            }

            //We need a world to spawn monsters in, duh
            if (Context.IsWorldReady)
            {
                if (args.Length == 0)
                {
                    Monitor.Log("You need to provide at least a Monster name!", LogLevel.Info);
                    return;
                }
                MonsterData.Monster m        = MonsterData.ForName(args[0]);
                Vector2             location = Game1.player.getTileLocation();

                if (m.Equals((MonsterData.Monster)(-1)))
                {
                    Monitor.Log($"There is no Monster with the name {args[0]}", LogLevel.Info);
                    return;
                }


                int amount = 1;

                try {
                    //Determine X tile
                    if (args.Length >= 2)
                    {
                        location.X = int.Parse(args[1].Replace(config.FarmerPositionCharacter.ToString(), location.X.ToString()));
                    }

                    //Determine Y tile
                    if (args.Length >= 3)
                    {
                        location.Y = int.Parse(args[2].Replace(config.FarmerPositionCharacter.ToString(), location.Y.ToString()));
                    }

                    if (args.Length >= 4)
                    {
                        amount = int.Parse(args[3]);
                    }
                } catch (Exception e) {
                    Console.Error.WriteLine(e.Message);
                    Monitor.Log("Invalid Arguments! Type \"monster_spawn help\" for usage help.", LogLevel.Info);
                    return;
                }

                if (m != MonsterData.Monster.Duggy && m != MonsterData.Monster.WildernessGolem)
                {
                    location.X *= Game1.tileSize;
                    location.Y *= Game1.tileSize;
                }

                Spawner.GetInstance().SpawnMonster(m, location, amount);
            }
            else
            {
                Monitor.Log("Load a save first!");
            }
        }
Beispiel #25
0
    public override bool ApplyInstant(FormationUnit performer, FormationUnit target, Effect effect)
    {
        if (target == null)
        {
            return(false);
        }

        if (effect.IntegerParams[EffectIntParams.Chance].HasValue)
        {
            if (!RandomSolver.CheckSuccess((float)effect.IntegerParams[EffectIntParams.Chance].Value / 100))
            {
                return(false);
            }
        }

        List <int>   summonPool = new List <int>();
        List <float> chancePool = new List <float>(SummonChances);

        for (int i = 0; i < SummonMonsters.Count; i++)
        {
            summonPool.Add(i);
        }

        for (int i = 0; i < SummonCount; i++)
        {
            if (summonPool.Count == 0)
            {
                break;
            }

            int rolledIndex = RandomSolver.ChooseRandomIndex(chancePool);
            int summonIndex = summonPool[rolledIndex];
            if (SummonLimits.Count > 0)
            {
                if (SummonLimits[summonIndex] <= performer.Party.Units.FindAll(unit =>
                                                                               unit.Character.Name == SummonMonsters[summonIndex]).Count)
                {
                    i--;
                    summonPool.RemoveAt(rolledIndex);
                    chancePool.RemoveAt(rolledIndex);
                    continue;
                }
            }
            if (performer.Formation.AvailableSummonSpace < DarkestDungeonManager.Data.Monsters[SummonMonsters[summonIndex]].Size)
            {
                i--;
                summonPool.RemoveAt(rolledIndex);
                chancePool.RemoveAt(rolledIndex);
                continue;
            }
            MonsterData summonData     = DarkestDungeonManager.Data.Monsters[SummonMonsters[summonIndex]];
            GameObject  summonObject   = Resources.Load("Prefabs/Monsters/" + summonData.TypeId) as GameObject;
            bool        rollInitiative = SummonRollInitiatives.Count > 0;
            if (SummonRanks.Count > 0)
            {
                RaidSceneManager.BattleGround.SummonUnit(summonData, summonObject, SummonRanks[summonIndex].
                                                         Ranks[RandomSolver.Next(SummonRanks[summonIndex].Ranks.Count)], rollInitiative, CanSpawnLoot);
            }
            else
            {
                RaidSceneManager.BattleGround.SummonUnit(summonData, summonObject, 1, rollInitiative, CanSpawnLoot);
            }
        }
        return(true);
    }
Beispiel #26
0
 /// <summary>
 /// 吸收怪物属性,加强英雄属性
 /// </summary>
 /// <param name="data"></param>
 private void PowerUpByMonster(MonsterData data)
 {
     this.heroData.PowerUpByAbsorbPower(data.HP, data.Def, data.Atk, data.AtkSpeed);
     this.RefreshMsgText();
 }
    public void SetData(int[] award)
    {
        if (award == null || award.Length == 0)
        {
            return;
        }

        ConfigDataType type = DataCore.getDataType(award[0]);

        switch (type)
        {
        case ConfigDataType.Item:
        {
            ItemData data = Core.Data.itemManager.getItemData(award[0]);
            if (data != null)
            {
                Spr_head.atlas      = AtlasMgr.mInstance.itemAtlas;
                Spr_head.spriteName = award[0].ToString();
                Lab_Name.text       = data.name;
                star.SetStar(data.star);
            }
            break;
        }

        case ConfigDataType.Monster:
        {
            MonsterData data = Core.Data.monManager.getMonsterByNum(award[0]);
            if (data != null)
            {
                AtlasMgr.mInstance.SetHeadSprite(Spr_head, award[0].ToString());
                Lab_Name.text = data.name;
                star.SetStar(data.star);
            }
            break;
        }

        case ConfigDataType.Equip:
        {
            EquipData data = Core.Data.EquipManager.getEquipConfig(award[0]);
            if (data != null)
            {
                Spr_head.atlas      = AtlasMgr.mInstance.equipAtlas;
                Spr_head.spriteName = data.ID.ToString();
                Lab_Name.text       = data.name;
                star.SetStar(data.star);
            }
            break;
        }

        case ConfigDataType.Gems:
        {
            GemData data = Core.Data.gemsManager.getGemData(award[0]);
            if (data != null)
            {
                Spr_head.atlas      = AtlasMgr.mInstance.commonAtlas;
                Spr_head.spriteName = data.anime2D;
                Lab_Name.text       = data.name;
                star.SetStar(data.star);
            }
            break;
        }

        case ConfigDataType.Frag:
        {
            SoulData data = Core.Data.soulManager.GetSoulConfigByNum(award[0]);
            switch ((ItemType)data.type)
            {
            case ItemType.Earth_Frage:
            case ItemType.Nameike_Frage:
                Spr_head.atlas      = AtlasMgr.mInstance.itemAtlas;
                Spr_head.spriteName = data.ID.ToString();
                break;

            case ItemType.Monster_Frage:
                AtlasMgr.mInstance.SetHeadSprite(Spr_head, data.updateId.ToString());
                break;
            }

            Lab_Name.text = data.name;
            star.SetStar(data.star);
            break;
        }
        }
        Spr_head.MakePixelPerfect();

        LabNum.text = ItemNumLogic.setItemNum(award[1], LabNum, Spr_Num);
        //award[1].ToString();
        gameObject.name = award[0].ToString();

        isEnable = System.Convert.ToBoolean(award[2]);
    }
Beispiel #28
0
 public void addLoadModelData(MonsterData md)
 {
     addLoadModelData(md.resource, null, md);
 }
    void InitSpawnCtlr()
    {
        if (SpecialGameState.IsGoldStage)//리젠 영역잡기
        {
            DungeonTable.EquipInfo mLowData = _LowDataMgr.instance.GetLowDataEquipBattle((byte)StageId);
            if (mLowData != null)
            {
                //regenCount = goldLowData.regenCount;
                List <string> charPos = mLowData.RegenCharacter.list;
                CLeft   = short.Parse(charPos[0]);
                CTop    = short.Parse(charPos[1]);
                CRight  = short.Parse(charPos[2]);
                CBottom = short.Parse(charPos[3]);

                List <string> mobPos = mLowData.RegenMob.list;
                MLeft   = short.Parse(mobPos[0]);
                MTop    = short.Parse(mobPos[1]);
                MRight  = short.Parse(mobPos[2]);
                MBottom = short.Parse(mobPos[3]);

                for (int i = 0; i < mLowData.DummyMonster.Count; i++)//몬스터
                {
                    MonsterData data = new MonsterData(uint.Parse(mLowData.DummyMonster[i]), float.Parse(mLowData.DummyMonsterTime[i]), int.Parse(mLowData.DropGold[i]), 0, false);
                    MonDataList.Add(data);
                }

                for (int i = 0; i < mLowData.RegenMobCount.Count; i++) //프랍 생성
                {
                    int count = int.Parse(mLowData.RegenMobCount[i]);  //해당 개수만큼 해당 번쨰 프랍 생성.
                    for (int j = 0; j < count; j++)
                    {
                        MonsterData data = new MonsterData(uint.Parse(mLowData.MonsterIndex[i]), float.Parse(mLowData.RegenMobTime[i]), 0, int.Parse(mLowData.GetMobPoint[i]), true);
                        MonDataList.Add(data);
                    }
                }
            }
        }
        else
        {
            DungeonTable.SkillInfo skillLowData = _LowDataMgr.instance.GetLowDataSkillBattle((byte)StageId);
            if (skillLowData != null)
            {
                List <string> charPos = skillLowData.RegenCharacter.list;
                CLeft   = short.Parse(charPos[0]);
                CTop    = short.Parse(charPos[1]);
                CRight  = short.Parse(charPos[2]);
                CBottom = short.Parse(charPos[3]);

                List <string> mobPos = skillLowData.RegenMob.list;
                MLeft   = short.Parse(mobPos[0]);
                MTop    = short.Parse(mobPos[1]);
                MRight  = short.Parse(mobPos[2]);
                MBottom = short.Parse(mobPos[3]);

                for (int i = 0; i < skillLowData.regenCount.Count; i++) //프랍 생성
                {
                    int count = int.Parse(skillLowData.regenCount[i]);  //해당 개수만큼 해당 번쨰 프랍 생성.
                    for (int j = 0; j < count; j++)
                    {
                        MonsterData data = new MonsterData(uint.Parse(skillLowData.MonsterIndex[i]), float.Parse(skillLowData.MonsterTime[i]), int.Parse(skillLowData.DropGold[i]), int.Parse(skillLowData.DropPoint[i]), false);
                        MonDataList.Add(data);
                    }
                }
            }
        }

        SpawnDisturbMob(true);

        //MaxBoxCount = SpawnPropList.Count;
        Debug.Log("SpacialDungeon Reward TotalValue= " + MaxValue);
    }
    public static void GetExtraEffectFluctuationValue(out int result, out int change, MonsterData monsterData, GameWebAPI.RespDataMA_GetWorldDungeonExtraEffectM.WorldDungeonExtraEffectM[] effectArray, EffectStatusBase.ExtraEffectType extraEffectType, int skillType = 0, bool isChipValue = true)
    {
        int num  = (int)ExtraEffectUtil.GetStatusValue(extraEffectType, monsterData, skillType);
        int num2 = 0;

        if (isChipValue)
        {
            num2 = ExtraEffectUtil.GetExtraChipValue(monsterData, extraEffectType);
        }
        MonsterData[] party = new MonsterData[]
        {
            monsterData
        };
        if (CMD_PartyEdit.instance != null)
        {
            MonsterData[] array = CMD_PartyEdit.instance.GetSelectedMD().ToArray();
            bool          flag  = array.Where((MonsterData item) => item.userMonster.userMonsterId == monsterData.userMonster.userMonsterId).Any <MonsterData>();
            if (flag)
            {
                party = array;
            }
            else
            {
                GameWebAPI.RespDataMN_GetDeckList.DeckList[] deckList = DataMng.Instance().RespDataMN_DeckList.deckList;
                string deckNoText = DataMng.Instance().RespDataMN_DeckList.selectDeckNum;
                GameWebAPI.RespDataMN_GetDeckList.DeckList deckList2 = deckList.Where((GameWebAPI.RespDataMN_GetDeckList.DeckList item) => item.deckNum == deckNoText.ToString()).SingleOrDefault <GameWebAPI.RespDataMN_GetDeckList.DeckList>();
                bool flag2 = deckList2.monsterList.Where((GameWebAPI.RespDataMN_GetDeckList.MonsterList item) => item.userMonsterId == monsterData.userMonster.userMonsterId).Any <GameWebAPI.RespDataMN_GetDeckList.MonsterList>();
                if (flag2)
                {
                    List <MonsterData> list = new List <MonsterData>();
                    foreach (GameWebAPI.RespDataMN_GetDeckList.MonsterList monsterList2 in deckList2.monsterList)
                    {
                        MonsterData monsterDataByUserMonsterID = MonsterDataMng.Instance().GetMonsterDataByUserMonsterID(monsterList2.userMonsterId, false);
                        list.Add(monsterDataByUserMonsterID);
                    }
                    party = list.ToArray();
                }
            }
        }
        int num3 = 0;
        AffectEffectProperty affectEffectProperty = null;

        if (extraEffectType == EffectStatusBase.ExtraEffectType.SkillPower)
        {
            List <AffectEffectProperty> affectEffectPropertyListForUtil = BattleServerControl.GetAffectEffectPropertyListForUtil(num.ToString());
            if (affectEffectPropertyListForUtil != null && affectEffectPropertyListForUtil.Count <AffectEffectProperty>() > 0)
            {
                affectEffectProperty = affectEffectPropertyListForUtil[0];
                num  = affectEffectProperty.GetPower(null);
                num3 = ExtraEffectUtil.GetExtraStageValue(num, monsterData, party, effectArray, affectEffectProperty, extraEffectType);
            }
            else
            {
                num = num3;
            }
        }
        else if (extraEffectType == EffectStatusBase.ExtraEffectType.SkillHit)
        {
            List <AffectEffectProperty> affectEffectPropertyListForUtil2 = BattleServerControl.GetAffectEffectPropertyListForUtil(num.ToString());
            if (affectEffectPropertyListForUtil2 != null && affectEffectPropertyListForUtil2.Count <AffectEffectProperty>() > 0)
            {
                affectEffectProperty = affectEffectPropertyListForUtil2[0];
                num  = (int)(affectEffectProperty.hitRate * 100f);
                num3 = ExtraEffectUtil.GetExtraStageValue(num, monsterData, party, effectArray, affectEffectProperty, extraEffectType);
            }
            else
            {
                num = num3;
            }
        }
        else
        {
            num3 = ExtraEffectUtil.GetExtraStageValue(num, monsterData, party, effectArray, affectEffectProperty, extraEffectType);
        }
        result = num3 + num2;
        change = 0;
        if (num2 > 0 || num < num3)
        {
            change = 1;
        }
        else if (num2 < 0 || num > num3)
        {
            change = -1;
        }
    }
    public void SetData(ItemOfReward award)
    {
        m_data = award;
        ConfigDataType type = DataCore.getDataType(award.pid);

        RED.SetActive(false, sp_soul.gameObject);
        switch (type)
        {
        case ConfigDataType.Item:
        {
            ItemData data = Core.Data.itemManager.getItemData(award.pid);
            if (data != null)
            {
                Spr_head.atlas = AtlasMgr.mInstance.itemAtlas;
//				    Spr_head.spriteName = award.pid.ToString();
                Spr_head.spriteName = data.iconID.ToString();
                Lab_Name.text       = data.name;
                star.SetStar(data.star);
            }
            break;
        }

        case ConfigDataType.Monster:
        {
            MonsterData data = Core.Data.monManager.getMonsterByNum(award.pid);
            if (data != null)
            {
                AtlasMgr.mInstance.SetHeadSprite(Spr_head, award.pid.ToString());
                Lab_Name.text = data.name;
                star.SetStar(data.star);
                if (sp_soul != null)
                {
                    Monster mon  = award.toMonster(Core.Data.monManager);
                    int     attr = (int)(mon.RTData.Attribute);
                    sp_soul.spriteName = "Attribute_" + attr.ToString();
                    RED.SetActive(true, sp_soul.gameObject);
                }
            }
            break;
        }

        case ConfigDataType.Equip:
        {
            EquipData data = Core.Data.EquipManager.getEquipConfig(award.pid);
            if (data != null)
            {
                Spr_head.atlas      = AtlasMgr.mInstance.equipAtlas;
                Spr_head.spriteName = data.ID.ToString();
                Lab_Name.text       = data.name;
                star.SetStar(data.star);
            }
            break;
        }

        case ConfigDataType.Gems:
        {
            GemData data = Core.Data.gemsManager.getGemData(award.pid);
            if (data != null)
            {
                Spr_head.atlas      = AtlasMgr.mInstance.commonAtlas;
                Spr_head.spriteName = data.anime2D;
                Lab_Name.text       = data.name;
                star.SetStar(data.star);
            }
            break;
        }

        case ConfigDataType.Frag:
        {
            SoulData data = Core.Data.soulManager.GetSoulConfigByNum(award.pid);
            switch ((ItemType)data.type)
            {
            case ItemType.Earth_Frage:
            case ItemType.Nameike_Frage:
                Spr_head.atlas      = AtlasMgr.mInstance.itemAtlas;
                Spr_head.spriteName = data.ID.ToString();
                break;

            case ItemType.Monster_Frage:
                AtlasMgr.mInstance.SetHeadSprite(Spr_head, data.updateId.ToString());
                sp_soul.spriteName = "bag-0003";
                sp_soul.MakePixelPerfect();
                RED.SetActive(true, sp_soul.gameObject);
                break;

            case ItemType.Equip_Frage:
                Spr_head.atlas      = AtlasMgr.mInstance.equipAtlas;
                Spr_head.spriteName = data.updateId.ToString();
                Spr_head.MakePixelPerfect();
                sp_soul.spriteName = "sui";
                sp_soul.MakePixelPerfect();
                RED.SetActive(true, sp_soul.gameObject);
                break;
            }

            Lab_Name.text = data.name;
            star.SetStar(data.star);
            break;
        }
        }
        Spr_head.MakePixelPerfect();
    }
    private static int GetExtraChipValue(MonsterData monsterData, EffectStatusBase.ExtraEffectType effectType)
    {
        float num    = 0f;
        int   areaId = ExtraEffectUtil.GetAreaId();

        GameWebAPI.RespDataMA_GetMonsterMG.MonsterM group = MonsterMaster.GetMonsterMasterByMonsterGroupId(monsterData.monsterM.monsterGroupId).Group;
        foreach (int num2 in monsterData.GetChipEquip().GetChipIdList())
        {
            GameWebAPI.RespDataMA_ChipEffectM.ChipEffect[] chipEffectData = ChipDataMng.GetChipEffectData(num2.ToString());
            if (chipEffectData != null)
            {
                GameWebAPI.RespDataMA_ChipEffectM.ChipEffect[] invocationList = ChipEffectStatus.GetInvocationList(chipEffectData, EffectStatusBase.EffectTriggerType.Area, monsterData.monsterM.monsterGroupId.ToInt32(), null, areaId);
                int num3 = 0;
                EffectStatusBase.ExtraEffectType effectType2 = EffectStatusBase.ExtraEffectType.Non;
                switch (effectType)
                {
                case EffectStatusBase.ExtraEffectType.Atk:
                    num3        = monsterData.userMonster.attack.ToInt32();
                    effectType2 = EffectStatusBase.ExtraEffectType.Atk;
                    break;

                case EffectStatusBase.ExtraEffectType.Def:
                    num3        = monsterData.userMonster.defense.ToInt32();
                    effectType2 = EffectStatusBase.ExtraEffectType.Def;
                    break;

                case EffectStatusBase.ExtraEffectType.Hp:
                    num3        = monsterData.userMonster.hp.ToInt32();
                    effectType2 = EffectStatusBase.ExtraEffectType.Hp;
                    break;

                case EffectStatusBase.ExtraEffectType.Speed:
                    num3        = monsterData.userMonster.speed.ToInt32();
                    effectType2 = EffectStatusBase.ExtraEffectType.Speed;
                    break;

                case EffectStatusBase.ExtraEffectType.Satk:
                    num3        = monsterData.userMonster.spAttack.ToInt32();
                    effectType2 = EffectStatusBase.ExtraEffectType.Satk;
                    break;

                case EffectStatusBase.ExtraEffectType.Sdef:
                    num3        = monsterData.userMonster.spDefense.ToInt32();
                    effectType2 = EffectStatusBase.ExtraEffectType.Sdef;
                    break;

                default:
                    if (effectType == EffectStatusBase.ExtraEffectType.SkillPower || effectType == EffectStatusBase.ExtraEffectType.SkillHit)
                    {
                        num3        = 0;
                        effectType2 = EffectStatusBase.ExtraEffectType.Non;
                    }
                    break;
                }
                GameWebAPI.RespDataMA_MonsterIntegrationGroupMaster responseMonsterIntegrationGroupMaster = MasterDataMng.Instance().ResponseMonsterIntegrationGroupMaster;
                GameWebAPI.RespDataMA_MonsterIntegrationGroupMaster.MonsterIntegrationGroup[] source      = responseMonsterIntegrationGroupMaster.monsterIntegrationGroupM.Where((GameWebAPI.RespDataMA_MonsterIntegrationGroupMaster.MonsterIntegrationGroup item) => item.monsterId == monsterData.monsterM.monsterId).ToArray <GameWebAPI.RespDataMA_MonsterIntegrationGroupMaster.MonsterIntegrationGroup>();
                string[] monsterIntegrationIds = source.Select((GameWebAPI.RespDataMA_MonsterIntegrationGroupMaster.MonsterIntegrationGroup item) => item.monsterIntegrationId).ToArray <string>();
                num += ChipEffectStatus.GetChipEffectValueToFloat(invocationList, (float)num3, false, monsterIntegrationIds, monsterData.monsterM.monsterGroupId, ExtraEffectUtil.ResistanceToTolerance(monsterData), group.tribe, MonsterGrowStepData.ToGrowStep(group.growStep), null, null, ChipEffectStatus.TargetType.Actor, effectType2, 0);
            }
        }
        return(Mathf.FloorToInt(num));
    }
Beispiel #33
0
    private void OnTouchEvolutionDiagramButton()
    {
        MonsterData dataChg = CMD_BaseSelect.DataChg;

        CMD_EvolutionRouteMap.CreateDialog(null, dataChg.GetMonsterMaster());
    }
    private static bool CheckExtraParams(MonsterData monsterData, GameWebAPI.RespDataMA_EventPointBonusM.EventPointBonus eventPointBonus)
    {
        if (float.Parse(eventPointBonus.effectValue) < 0f)
        {
            return(false);
        }
        ExtraEffectUtil.EventPointBonusTargetSubType eventPointBonusTargetSubType = (ExtraEffectUtil.EventPointBonusTargetSubType) int.Parse(eventPointBonus.targetSubType);
        switch (eventPointBonusTargetSubType)
        {
        case ExtraEffectUtil.EventPointBonusTargetSubType.MonsterTribe:
            if (monsterData.monsterMG.tribe.Equals(eventPointBonus.targetValue))
            {
                return(true);
            }
            break;

        case ExtraEffectUtil.EventPointBonusTargetSubType.MonsterGroup:
            if (monsterData.monsterMG.monsterGroupId.Equals(eventPointBonus.targetValue))
            {
                return(true);
            }
            break;

        case ExtraEffectUtil.EventPointBonusTargetSubType.GrowStep:
            if (monsterData.monsterMG.growStep.Equals(eventPointBonus.targetValue))
            {
                return(true);
            }
            break;

        case ExtraEffectUtil.EventPointBonusTargetSubType.SkillId:
            if (monsterData.GetCommonSkill() != null && monsterData.GetCommonSkill().skillId.Equals(eventPointBonus.targetValue))
            {
                return(true);
            }
            if (monsterData.GetLeaderSkill() != null && monsterData.GetLeaderSkill().skillId.Equals(eventPointBonus.targetValue))
            {
                return(true);
            }
            break;

        case ExtraEffectUtil.EventPointBonusTargetSubType.ChipId:
        {
            MonsterChipEquipData chipEquip = monsterData.GetChipEquip();
            int[] chipIdList = chipEquip.GetChipIdList();
            if (chipIdList.Where((int item) => item == eventPointBonus.targetValue.ToInt32()).Any <int>())
            {
                return(true);
            }
            break;
        }

        default:
            if (eventPointBonusTargetSubType == ExtraEffectUtil.EventPointBonusTargetSubType.MonsterIntegrationGroup)
            {
                GameWebAPI.RespDataMA_MonsterIntegrationGroupMaster.MonsterIntegrationGroup[] monsterIntegrationGroupM = MasterDataMng.Instance().ResponseMonsterIntegrationGroupMaster.monsterIntegrationGroupM;
                for (int i = 0; i < monsterIntegrationGroupM.Length; i++)
                {
                    if (eventPointBonus.targetValue.Equals(monsterIntegrationGroupM[i].monsterIntegrationId) && monsterIntegrationGroupM[i].monsterId.Equals(monsterData.monsterM.monsterId))
                    {
                        return(true);
                    }
                }
            }
            break;
        }
        return(false);
    }
Beispiel #35
0
    // Add a section of an ini file to game content
    // name is from the ini file and must start with the type
    // path is relative and is used for images or other paths in the content
    void AddContent(string name, Dictionary <string, string> content, string path, string packID)
    {
        // Is this a "TileSide" entry?
        if (name.IndexOf(TileSideData.type) == 0)
        {
            TileSideData d = new TileSideData(name, content, path);
            // Ignore invalid entry
            if (d.name.Equals(""))
            {
                return;
            }
            // If we don't already have one then add this
            if (!tileSides.ContainsKey(name))
            {
                tileSides.Add(name, d);
                d.sets.Add(packID);
            }
            // If we do replace if this has higher priority
            else if (tileSides[name].priority < d.priority)
            {
                tileSides.Remove(name);
                tileSides.Add(name, d);
            }
            // items of the same priority belong to multiple packs
            else if (tileSides[name].priority == d.priority)
            {
                tileSides[name].sets.Add(packID);
            }
        }

        // Is this a "Hero" entry?
        if (name.IndexOf(HeroData.type) == 0)
        {
            HeroData d = new HeroData(name, content, path);
            // Ignore invalid entry
            if (d.name.Equals(""))
            {
                return;
            }
            // If we don't already have one then add this
            if (!heros.ContainsKey(name))
            {
                heros.Add(name, d);
                d.sets.Add(packID);
            }
            // If we do replace if this has higher priority
            else if (heros[name].priority < d.priority)
            {
                heros.Remove(name);
                heros.Add(name, d);
            }
            // items of the same priority belong to multiple packs
            else if (heros[name].priority == d.priority)
            {
                heros[name].sets.Add(packID);
            }
        }

        // Is this a "Item" entry?
        if (name.IndexOf(ItemData.type) == 0)
        {
            ItemData d = new ItemData(name, content, path);
            // Ignore invalid entry
            if (d.name.Equals(""))
            {
                return;
            }
            // If we don't already have one then add this
            if (!items.ContainsKey(name))
            {
                items.Add(name, d);
                d.sets.Add(packID);
            }
            // If we do replace if this has higher priority
            else if (items[name].priority < d.priority)
            {
                items.Remove(name);
                items.Add(name, d);
            }
            // items of the same priority belong to multiple packs
            else if (items[name].priority == d.priority)
            {
                items[name].sets.Add(packID);
            }
        }

        // Is this a "Monster" entry?
        if (name.IndexOf(MonsterData.type) == 0)
        {
            MonsterData d = new MonsterData(name, content, path);
            // Ignore invalid entry
            if (d.name.Equals(""))
            {
                return;
            }
            // Ignore monster activations
            if (name.IndexOf(ActivationData.type) != 0)
            {
                // If we don't already have one then add this
                if (!monsters.ContainsKey(name))
                {
                    monsters.Add(name, d);
                    d.sets.Add(packID);
                }
                // If we do replace if this has higher priority
                else if (monsters[name].priority < d.priority)
                {
                    monsters.Remove(name);
                    monsters.Add(name, d);
                }
                // items of the same priority belong to multiple packs
                else if (monsters[name].priority == d.priority)
                {
                    monsters[name].sets.Add(packID);
                }
            }
        }

        // Is this a "Activation" entry?
        if (name.IndexOf(ActivationData.type) == 0)
        {
            ActivationData d = new ActivationData(name, content, path);
            // Ignore invalid entry
            if (d.name.Equals(""))
            {
                return;
            }
            // If we don't already have one then add this
            if (!activations.ContainsKey(name))
            {
                activations.Add(name, d);
                d.sets.Add(packID);
            }
            // If we do replace if this has higher priority
            else if (activations[name].priority < d.priority)
            {
                activations.Remove(name);
                activations.Add(name, d);
            }
            // items of the same priority belong to multiple packs
            else if (activations[name].priority == d.priority)
            {
                activations[name].sets.Add(packID);
            }
        }

        // Is this a "Attack" entry?
        if (name.IndexOf(AttackData.type) == 0)
        {
            AttackData d = new AttackData(name, content, path);
            // Ignore invalid entry
            if (d.name.Equals(""))
            {
                return;
            }
            // If we don't already have one then add this
            if (!investigatorAttacks.ContainsKey(name))
            {
                investigatorAttacks.Add(name, d);
                d.sets.Add(packID);
            }
            // If we do replace if this has higher priority
            else if (investigatorAttacks[name].priority < d.priority)
            {
                investigatorAttacks.Remove(name);
                investigatorAttacks.Add(name, d);
            }
            // items of the same priority belong to multiple packs
            else if (investigatorAttacks[name].priority == d.priority)
            {
                investigatorAttacks[name].sets.Add(packID);
            }
        }

        // Is this a "Evade" entry?
        if (name.IndexOf(EvadeData.type) == 0)
        {
            EvadeData d = new EvadeData(name, content, path);
            // Ignore invalid entry
            if (d.name.Equals(""))
            {
                return;
            }
            // If we don't already have one then add this
            if (!investigatorEvades.ContainsKey(name))
            {
                investigatorEvades.Add(name, d);
                d.sets.Add(packID);
            }
            // If we do replace if this has higher priority
            else if (investigatorEvades[name].priority < d.priority)
            {
                investigatorEvades.Remove(name);
                investigatorEvades.Add(name, d);
            }
            // items of the same priority belong to multiple packs
            else if (investigatorEvades[name].priority == d.priority)
            {
                investigatorEvades[name].sets.Add(packID);
            }
        }

        // Is this a "Horror" entry?
        if (name.IndexOf(HorrorData.type) == 0)
        {
            HorrorData d = new HorrorData(name, content, path);
            // Ignore invalid entry
            if (d.name.Equals(""))
            {
                return;
            }
            // If we don't already have one then add this
            if (!horrorChecks.ContainsKey(name))
            {
                horrorChecks.Add(name, d);
                d.sets.Add(packID);
            }
            // If we do replace if this has higher priority
            else if (horrorChecks[name].priority < d.priority)
            {
                horrorChecks.Remove(name);
                horrorChecks.Add(name, d);
            }
            // items of the same priority belong to multiple packs
            else if (horrorChecks[name].priority == d.priority)
            {
                horrorChecks[name].sets.Add(packID);
            }
        }

        // Is this a "Token" entry?
        if (name.IndexOf(TokenData.type) == 0)
        {
            TokenData d = new TokenData(name, content, path);
            // Ignore invalid entry
            if (d.name.Equals(""))
            {
                return;
            }
            // If we don't already have one then add this
            if (!tokens.ContainsKey(name))
            {
                tokens.Add(name, d);
                d.sets.Add(packID);
            }
            // If we do replace if this has higher priority
            else if (tokens[name].priority < d.priority)
            {
                tokens.Remove(name);
                tokens.Add(name, d);
            }
            // items of the same priority belong to multiple packs
            else if (tokens[name].priority == d.priority)
            {
                tokens[name].sets.Add(packID);
            }
        }

        // Is this a "Peril" entry?
        if (name.IndexOf(PerilData.type) == 0)
        {
            PerilData d = new PerilData(name, content);
            // Ignore invalid entry
            if (d.sectionName.Equals(""))
            {
                return;
            }
            // If we don't already have one then add this
            if (!perils.ContainsKey(name))
            {
                perils.Add(name, d);
            }
            // If we do replace if this has higher priority
            else if (perils[name].priority < d.priority)
            {
                perils.Remove(name);
                perils.Add(name, d);
            }
        }

        // Is this a "Puzzle" entry?
        if (name.IndexOf(PuzzleData.type) == 0)
        {
            PuzzleData d = new PuzzleData(name, content, path);
            // Ignore invalid entry
            if (d.name.Equals(""))
            {
                return;
            }
            // If we don't already have one then add this
            if (!puzzles.ContainsKey(name))
            {
                puzzles.Add(name, d);
            }
            // If we do replace if this has higher priority
            else if (puzzles[name].priority < d.priority)
            {
                puzzles.Remove(name);
                puzzles.Add(name, d);
            }
        }
    }
Beispiel #36
0
        public void SetCfg(MonsterData cfg)
        {
            m_monsterData = cfg;
            SetIntAttr("speed", cfg.speed);
            SetIntAttr("scaleRadius", cfg.scaleRadius);

        }
 public void SetSelectedMonster(MonsterData data)
 {
     m_selectedMonster = data;
 }
 private List<MonsterData> SerializeMonsters()
 {
     var list = new List<MonsterData>();
     foreach (var monster in _inGame.monsters)
     {
         var monsterData = new MonsterData
         {
             type = monster.GetType().ToString(),
             Position = monster.Position,
             CurrentHitPoints = monster.CurrentHitPoints,
             CurrentMana = monster.CurrentMana,
         };
         list.Add(monsterData);
     }
     return list;
 }
 // Use this for initialization
 void Start()
 {
     enemiesInRange = new List<GameObject>();
     lastShotTime = Time.time;
     monsterData = gameObject.GetComponentInChildren<MonsterData> ();
 }
Beispiel #40
0
 private static bool CheckGrowStep(MonsterData monsterData, string targetValue)
 {
     return(monsterData.monsterMG.growStep == targetValue);
 }
Beispiel #41
0
        private void incomingMonsterData(MonsterData mobdata)
        {
            bool found = false;

            foreach(var entity in GameWorld.GetInstance.listEntity)
            {
                if (entity is NetworkMonsterSprite)
                {
                    NetworkMonsterSprite monster = (NetworkMonsterSprite)entity;

                    if (monster.InstanceID.ToString() == mobdata.InstanceID)
                    {
                        found = true; // update existing monster

                        if (mobdata.Action == "Sprite_Update")
                        {
                            if (Math.Abs(monster.Position.X - mobdata.PositionX) >= 2) // avoid lag
                            {
                                if (monster.spriteEffect == SpriteEffects.None)
                                    monster.WALK_SPEED += (int)(monster.Position.X - mobdata.PositionX) * 2;
                                else
                                    monster.WALK_SPEED -= (int)(monster.Position.X - mobdata.PositionX) * 2;

                                monster.WALK_SPEED = Clamp(monster.WALK_SPEED, 50, 170);
                            }
                            else
                                monster.WALK_SPEED = 97;
                        }
                        if (mobdata.Action == "Agressive_Update")
                        {
                            monster.RUN_SPEED = 122;
                            monster.update_server(
                                new Vector2(mobdata.PositionX, mobdata.PositionY),
                                (EntityState)Enum.Parse(typeof(EntityState), mobdata.spritestate),
                                (SpriteEffects)Enum.Parse(typeof(SpriteEffects), mobdata.spriteEffect));

                        }
                        else if (mobdata.Action == "Died")
                        {
                            monster.KeepAliveTime = 0; // remove at next update round
                        }
                        else
                        {
                            monster.WALK_SPEED = 97;
                            monster.update_server(
                                new Vector2(mobdata.PositionX, mobdata.PositionY),
                                (EntityState)Enum.Parse(typeof(EntityState), mobdata.spritestate),
                                (SpriteEffects)Enum.Parse(typeof(SpriteEffects), mobdata.spriteEffect));
                        }

                    }
                }
            }

            if (!found) // add new monster
                if (GameWorld.GetInstance.newEntity.FindAll(x => x.InstanceID.ToString() == mobdata.InstanceID).Count == 0)
                    GameWorld.GetInstance.newEntity.Add(
                        new NetworkMonsterSprite(mobdata.MonsterID, mobdata.InstanceID,
                            new Vector2(mobdata.PositionX, mobdata.PositionY),
                            new Vector2(mobdata.BorderMin, mobdata.BorderMax)));
        }
Beispiel #42
0
 private void LoadData()
 {
     MonsterData.LoadMonsterData();
     AbnormalityData.LoadAbnormalityData();
 }
Beispiel #43
0
 private static bool CheckTribe(MonsterData monsterData, string targetValue)
 {
     return(monsterData.monsterMG.tribe == targetValue);
 }
Beispiel #44
0
	public void RequestSpawnEnemy(string lairName, string monsterName)
	{
		if(m_network != null) {

			MonsterData monster = new MonsterData ();
	
			monster.lairId = lairName;
			monster.monsterId = monsterName;
	
			MonsterPacket packet = new MonsterPacket(monster);
			int serverNode = m_network.GetServerNode();
	
			m_network.SendReliable<MonsterData>(serverNode, packet);
		}
	}
Beispiel #45
0
 private static bool CheckMonsterGroup(MonsterData monsterData, string targetValue)
 {
     return(monsterData.monsterMG.monsterGroupId == targetValue);
 }
    void OnGUI()
    {
        if (_data == null) {
            // ScriptableObjectの読み込み
            _data = AssetDatabase.LoadAssetAtPath(DataPath, typeof(MonsterMaster)) as MonsterMaster;
            if(_data == null)
            {
                _data = ScriptableObject.CreateInstance<MonsterMaster>() as MonsterMaster;
                AssetDatabase.CreateAsset(_data, DataPath);
                AssetDatabase.Refresh();
            }
        }

        EditorGUILayout.BeginHorizontal();

        #region 要素の追加処理 ================================================================================
        Color mainColor = GUI.color;
        GUI.color = Color.green;
        if (GUILayout.Button("+", GUILayout.Width(20))) {
            MonsterData addData = new MonsterData();
            MonsterData[] copy = new MonsterData[_data.mons.Count];
            Array.Copy(_data.mons.ToArray(), copy, _data.mons.Count);
            Array.Sort(copy, (MonsterData a, MonsterData b)=>{ return a.id - b.id; });
            int newId = (copy!=null && copy.Length>0) ? copy[0].id : 0;
            // 最小のモンスターIDを探す
            for (int i=0; i<copy.Length; i++)
            {
                if (newId < copy[i].id) {
                    break;
                }
                else {
                    newId++;
                }
            }
            addData.id = newId;

            // データの追加
            _data.mons.Insert(newId, addData);
        }
        GUI.color = mainColor;
        #endregion

        #region コピー処理 ================================================================================
        GUI.color = (copyInstance==null) ? Color.white : Color.green;
        if (GUILayout.Button("copy", GUILayout.Width(50))) {
            if (selected != -1)
            {
                copyInstance = (MonsterData)_data.mons[selected].Clone();
                Debug.Log("copy : " + copyInstance.id + "  " +  copyInstance.name);
            }
        }
        GUI.color = mainColor;
        #endregion

        #region ペースト処理 ================================================================================
        GUI.color = (copyInstance==null ? Color.white : Color.green);
        if (GUILayout.Button("paste", GUILayout.Width(50))) {
            if (selected != -1)
            {
                int pasteId = _data.mons[selected].id;
                copyInstance.id = pasteId;
                _data.mons[selected] = copyInstance;
                Debug.Log("paste : " + copyInstance.id + "  " +  copyInstance.name);
            }
        }
        GUI.color = mainColor;
        #endregion

        EditorGUILayout.EndHorizontal();

        #region 各要素の編集 ================================================================================
        scrollPos = GUILayout.BeginScrollView(scrollPos);
        Color orgCol = GUI.backgroundColor;

        // 配置オブジェクトのリストを表示
        if (_data != null && _data.mons != null && _data.mons.Count > 0)
        {
            for(int i = 0; i < _data.mons.Count; i++) {
                orgCol = GUI.backgroundColor;

                GUILayout.BeginHorizontal();
                bool prev = i == selected;
                if (prev) GUI.backgroundColor = Color.magenta;
                bool flag = GUILayout.Toggle((i == selected), _data.mons[i].id.ToString() + " : " + _data.mons[i].j_name, "BoldLabel");

                GUI.backgroundColor = orgCol;
                if (GUILayout.Button("Edit",GUILayout.Width(60))) {
                    isEditMode = !isEditMode;
                    selected = i;// 選択中にする
                }
                GUI.backgroundColor = Color.red;
                if (GUILayout.Button("Remove", GUILayout.Width(60))) {
                    // 削除確認のダイアログ
                    bool result = EditorUtility.DisplayDialog(
                        "Remove",
                        "Remove this object.",
                        "OK",
                        "Cancel");

                    if(result){
                        _data.mons.RemoveAt(i);
                        GUI.FocusControl("");
                    }
                }
                GUI.backgroundColor = orgCol;
                EditorGUILayout.EndHorizontal();
                if (flag){
                    selected = i;

                    // 編集モード
                    if (isEditMode){
                        // TODO : 変数代入のエディタスクリプトを記述
                        int id_new				= EditorGUILayout.IntField("\tid", _data.mons[i].id);
                        if (id_new != _data.mons[i].id)
                        {
                            // すでにIDが使われていないかチェック
                            if (_data.mons.Find(a=>a.id==id_new) == null)
                                _data.mons[i].id = id_new;
                        }

                        _data.mons[i].name		= EditorGUILayout.TextField("\tname", _data.mons[i].name);
                        _data.mons[i].j_name		= EditorGUILayout.TextField("\tj_name", _data.mons[i].j_name);
                        _data.mons[i].race		= EditorGUILayout.TextField("\trace", _data.mons[i].race);
                        _data.mons[i].rarity = EditorGUILayout.IntField("\trarity", _data.mons[i].rarity);
                        _data.mons[i].element		= (Element)Enum.ToObject(typeof(Element), EditorGUILayout.EnumPopup("\telement", _data.mons[i].element));

                        _data.mons[i].level = EditorGUILayout.IntField("\tlevel", _data.mons[i].level);
                        _data.mons[i].b_hp = EditorGUILayout.IntField("\tb_hp", _data.mons[i].b_hp);
                        _data.mons[i].b_atk = EditorGUILayout.IntField("\tb_atk", _data.mons[i].b_atk);
                        _data.mons[i].b_def = EditorGUILayout.IntField("\tb_def", _data.mons[i].b_def);
                        _data.mons[i].b_spd = EditorGUILayout.IntField("\tb_spd", _data.mons[i].b_spd);
                        _data.mons[i].b_crate = EditorGUILayout.IntField("\tb_crate", _data.mons[i].b_crate);
                        _data.mons[i].b_cdmg = EditorGUILayout.IntField("\tb_cdmg", _data.mons[i].b_cdmg);
                        _data.mons[i].b_res = EditorGUILayout.IntField("\tb_res", _data.mons[i].b_res);
                        _data.mons[i].b_acc = EditorGUILayout.IntField("\tb_acc", _data.mons[i].b_acc);
                    }
                }
                else{
                    // トグルを二度押ししたら非選択状態にする
                    if (prev){
                        selected = -1;
                        isEditMode = false;
                    }
                }
                GUI.color = orgCol;
            }
        }
        #endregion

        // スクロールバー終了
        GUILayout.EndScrollView();
        // Apply Data
        ScriptableObject scriptable = AssetDatabase.LoadAssetAtPath(DataPath, typeof(ScriptableObject)) as ScriptableObject;
        EditorUtility.SetDirty(scriptable);
    }