static int GetTotalMaxHP(IntPtr L) { LuaScriptMgr.CheckArgsCount(L, 2); Games.Module.Wars.WarEnterData obj = (Games.Module.Wars.WarEnterData)LuaScriptMgr.GetNetObjectSelf(L, 1, "Games.Module.Wars.WarEnterData"); int arg0 = (int)LuaScriptMgr.GetNumber(L, 2); float o = obj.GetTotalMaxHP(arg0); LuaScriptMgr.Push(L, o); return(1); }
/** 生成数据--势力 */ public void GenerationLegions() { // 占用自己颜色的势力 LegionData occupyMainLegionData = null; War.realPlayerCount = 0; // 创建势力数据LegionData foreach (KeyValuePair <int, StageLegionConfig> kvp in stageConfig.legionDict) { StageLegionConfig legionConfig = kvp.Value; LegionData legionData; if (legionConfig.type == LegionType.Player) { legionData = new LegionData(legionConfig.legionId, "Player-" + legionConfig.legionId, LegionType.Player, legionConfig.aiSendArm, legionConfig.aiUplevel, legionConfig.aiSkill, legionConfig.produce); if (enterData.vsmode == VSMode.PVP && legionData.legionId != ownLegionID) { legionData.aiSendArm = false; legionData.aiSkill = false; legionData.aiUplevel = false; } } else if (legionConfig.type == LegionType.Computer) { legionData = new LegionData(legionConfig.legionId, "Player-" + legionConfig.legionId, LegionType.Computer, legionConfig.aiSendArm, legionConfig.aiUplevel, legionConfig.aiSkill, legionConfig.produce); if (enterData.vsmode == VSMode.PVP && !War.isMainLegion) { legionData.aiSendArm = false; legionData.aiSkill = false; legionData.aiUplevel = false; } } else { legionData = new LegionData(legionConfig.legionId, "Player-" + legionConfig.legionId, LegionType.Neutral, legionConfig.aiSendArm, legionConfig.aiUplevel, legionConfig.aiSkill, legionConfig.produce); if (enterData.vsmode == VSMode.PVP && !War.isMainLegion) { legionData.aiSendArm = false; legionData.aiSkill = false; legionData.aiUplevel = false; } } legionData.produceLimit = legionConfig.produceLimit; legionData.colorId = legionConfig.color; legionDict.Add(legionData.legionId, legionData); if (legionData.colorId == War.config.ownDefaultColor) { occupyMainLegionData = legionData; } legionData.roleId = enterData.GetRoleId(legionData.legionId); if (!roleDict.ContainsKey(legionData.roleId)) { roleDict.Add(legionData.roleId, legionData); } legionData.expeditionTotalMaxHP = enterData.GetTotalMaxHP(legionData.legionId); legionData.expeditionTotalHP = enterData.GetTotalHP(legionData.legionId); legionData.expeditionInitHP = legionData.expeditionTotalHP; legionData.expeditionLeftHP = legionData.expeditionTotalHP; WarEnterLegionData enterLegionData = enterData.GetEnterLegionData(legionData.legionId); if (enterLegionData != null) { legionData.name = enterLegionData.name; legionData.headAvatarId = enterLegionData.headAvatarId; legionData.levelData.intBattleForce = enterLegionData.totalAtk; legionData.levelData.intProduceSpeed = enterLegionData.totalProduceSpeed; legionData.levelData.intMoveSpeed = enterLegionData.totalMoveSpeed; legionData.levelData.initHP = enterLegionData.initHP; legionData.levelData.maxBattleForce = enterLegionData.maxAtk; legionData.levelData.maxProduceSpeed = enterLegionData.maxProduceSpeed; legionData.levelData.maxMoveSpeed = enterLegionData.maxMovespeed; legionData.levelData.subBattleForce = enterLegionData.subAtk; legionData.levelData.subProduceSpeed = enterLegionData.subProduceSpeed; legionData.levelData.subMoveSpeed = enterLegionData.subMoveSpeed; legionData.sendArmRate = enterLegionData.sendArmRate; if (enterLegionData.isRobot) { if (enterData.vsmode == VSMode.PVP && War.isMainLegion && legionData.colorId != 0) { legionData.aiSendArm = true; legionData.aiSkill = true; legionData.aiUplevel = true; } legionData.type = LegionType.Computer; if (legionData.colorId == 0) { legionData.type = LegionType.Neutral; } } else { legionData.type = LegionType.Player; legionData.aiSendArm = false; legionData.aiSkill = false; legionData.aiUplevel = false; } if (enterLegionData.ai > 0) { legionData.aiConfig = War.model.GetAIConfig(enterLegionData.ai);; } } else { NeutralExpConfig roleExpConfig = War.model.GetNeutralExpConfig(stageConfig.neutralRoleLevel); legionData.levelData.intBattleForce = roleExpConfig.props[PropId.BattleForceAdd]; legionData.levelData.intProduceSpeed = roleExpConfig.props[PropId.ProduceSpeedAdd]; legionData.levelData.intMoveSpeed = roleExpConfig.props[PropId.MoveSpeedAdd]; legionData.levelData.initHP = roleExpConfig.props[PropId.HpAdd]; if (legionData.colorId == 0) { legionData.type = LegionType.Neutral; } else { legionData.type = LegionType.Computer; } } if (legionConfig.type == LegionType.Player) { War.realPlayerCount++; } if (War.isEditor) { legionData.aiSendArm = false; legionData.aiSkill = false; legionData.produce = false; legionData.aiUplevel = false; } if (War.isTest) { if (legionData.type == LegionType.Computer || (legionData.type == LegionType.Player && legionData.legionId != War.ownLegionID)) { legionData.aiSendArm = true; legionData.aiSkill = true; legionData.produce = true; legionData.aiUplevel = true; legionData.aiConfig = stageConfig.id >= 71 && stageConfig.id <= 80 ? War.model.GetAIConfig(102) : War.model.GetAIConfig(302); } } if (War.isRecord) { legionData.aiSendArm = false; legionData.aiSkill = false; legionData.aiUplevel = false; } int id = GetPlayerUID(legionData.legionId); // 势力单位数据 UnitData unitData = new UnitData(); unitData.id = id; unitData.legionId = legionData.legionId; unitData.unitType = UnitType.Player; float x = 5 * Mathf.FloorToInt((legionData.legionId + 1) / 2) * (legionData.legionId % 2 == 0 ? 1 : -1); unitData.position = new Vector3(x, 0f, -11F); legionData.unitData = unitData; /** 战前势力--怒气上限 */ legionData.legionInitProp[PropId.InitMaxMage] = WarFormula.WF_Legion_MaxMage(); /** 战前势力--怒气 */ legionData.legionInitProp[PropId.MagAdd] = legionData.legionInitProp[PropId.InitMag] = enterData.vsmode != VSMode.PVE_Expedition ? WarFormula.WF_Legion_Mage() : enterData.GetMag(legionData.legionId); /** 战前势力--怒气 */ legionData.legionInitProp[PropId.InitMageSpeed] = ConstConfig.GetFloat(ConstConfig.ID.War_DV_Mag_Recovery_Ratio); //TODO Test //legionData.aiSendArm = true; //legionData.aiSkill = true; //legionData.aiConfig = War.model.GetAIConfig(302); } // 获取自己势力数据 ownLegion = legionDict[ownLegionID]; // 交换势力颜色 if (occupyMainLegionData != null && occupyMainLegionData != ownLegion) { int tempColorId = ownLegion.colorId; ownLegion.colorId = occupyMainLegionData.colorId; occupyMainLegionData.colorId = tempColorId; } else { ownLegion.colorId = War.config.ownDefaultColor; } // 创建势力联盟数据LegionGroupData foreach (StageLegionGroupConfig groupConfig in stageConfig.legionGroups) { LegionGroupData groupData = new LegionGroupData(groupConfig.id); legionGroupDict.Add(groupData.id, groupData); foreach (StageLegionConfig legionConfig in groupConfig.list) { groupData.AddLegion(legionDict[legionConfig.legionId]); } } List <int> colorIdList = new List <int>(); foreach (KeyValuePair <int, LegionData> legionKVP in War.sceneData.legionDict) { colorIdList.Add(legionKVP.Value.colorId); } colorIds = colorIdList.ToArray(); }