static int Update(IntPtr L) { LuaScriptMgr.CheckArgsCount(L, 2); PlayerState_CrossOver obj = (PlayerState_CrossOver)LuaScriptMgr.GetNetObjectSelf(L, 1, "PlayerState_CrossOver"); IM.Number arg0 = (IM.Number)LuaScriptMgr.GetNetObject(L, 2, typeof(IM.Number)); obj.Update(arg0); return(0); }
static int OnEnter(IntPtr L) { LuaScriptMgr.CheckArgsCount(L, 2); PlayerState_CrossOver obj = (PlayerState_CrossOver)LuaScriptMgr.GetNetObjectSelf(L, 1, "PlayerState_CrossOver"); PlayerState arg0 = (PlayerState)LuaScriptMgr.GetNetObject(L, 2, typeof(PlayerState)); obj.OnEnter(arg0); return(0); }
static int CalcCrossRate(IntPtr L) { LuaScriptMgr.CheckArgsCount(L, 2); Player arg0 = (Player)LuaScriptMgr.GetNetObject(L, 1, typeof(Player)); Player arg1 = (Player)LuaScriptMgr.GetNetObject(L, 2, typeof(Player)); IM.Number o = PlayerState_CrossOver.CalcCrossRate(arg0, arg1); LuaScriptMgr.PushValue(L, o); return(1); }
static int _CreatePlayerState_CrossOver(IntPtr L) { int count = LuaDLL.lua_gettop(L); if (count == 2) { PlayerStateMachine arg0 = (PlayerStateMachine)LuaScriptMgr.GetNetObject(L, 1, typeof(PlayerStateMachine)); GameMatch arg1 = (GameMatch)LuaScriptMgr.GetNetObject(L, 2, typeof(GameMatch)); PlayerState_CrossOver obj = new PlayerState_CrossOver(arg0, arg1); LuaScriptMgr.PushObject(L, obj); return(1); } else { LuaDLL.luaL_error(L, "invalid arguments to method: PlayerState_CrossOver.New"); } return(0); }
static int get_crossed(IntPtr L) { object o = LuaScriptMgr.GetLuaObject(L, 1); PlayerState_CrossOver obj = (PlayerState_CrossOver)o; if (obj == null) { LuaTypes types = LuaDLL.lua_type(L, 1); if (types == LuaTypes.LUA_TTABLE) { LuaDLL.luaL_error(L, "unknown member name crossed"); } else { LuaDLL.luaL_error(L, "attempt to index crossed on a nil value"); } } LuaScriptMgr.Push(L, obj.crossed); return(1); }
override public void Update(IM.Number fDeltaTime) { PlayerState state = m_player.m_StateMachine.m_curState; if (state.m_eState != PlayerState.State.eCrossOver) { PlayerState_CrossOver stateCross = m_player.m_StateMachine.GetState(PlayerState.State.eCrossOver) as PlayerState_CrossOver; if (stateCross.crossed) // Cross over succeed. { if (IM.Random.value < new IM.Number(0, 300)) // Attack unreasoningly { AI_Positioning aiPositioning = m_system.GetState(Type.ePositioning) as AI_Positioning; aiPositioning.unreasonable = true; Debug.Log("Attack unreasonable."); } else { Player defender = m_player.GetDefender(); if (defender != null) // Still being defended. { List <SkillInstance> basicSkills = m_player.m_skillSystem.GetBasicSkillsByCommand(Command.CrossOver); uint uBasicSkillCost = basicSkills[0].skill.levels[1].stama; if (m_player.m_stamina.m_curStamina >= new IM.Number((int)uBasicSkillCost)) // Has enough stamina to cross again. { IM.Number crossRate = PlayerState_CrossOver.CalcCrossRate(m_player, defender); // Cross over success rate. if (crossRate > new IM.Number(0, 600)) { m_system.SetTransaction(this, new IM.Number(100), true); return; } } } } } else // Cross over failed. { if (state.m_eState == PlayerState.State.eStand || state.m_eState == PlayerState.State.eRun || state.m_eState == PlayerState.State.eRush || state.m_eState == PlayerState.State.eHold) { Player defender = m_player.GetDefender(); if (defender != null) { IM.Number crossRate = PlayerState_CrossOver.CalcCrossRate(m_player, defender); // Cross over success rate. if (crossRate < new IM.Number(0, 200)) // Success rate is too low. Pass to teammate. { List <Player> teammates = new List <Player>(m_player.m_team.members); teammates.Remove(m_player); Player target = AIUtils.GetMostPriorPassTarget(teammates, m_player); if (target != null) { AI_Pass passState = m_system.GetState(Type.ePass) as AI_Pass; passState.m_toPass = target; m_system.SetTransaction(passState, new IM.Number(100), true); return; } } } } else if (state.m_eState == PlayerState.State.eKnocked) // Wait knocked state over to do passing { return; } } m_system.SetTransaction(AIState.Type.ePositioning); } }