#!/usr/bin/python
|
# -*- coding: GBK -*-
|
# ----------------------------------------------------------------------------------------------------
|
#
|
# ----------------------------------------------------------------------------------------------------
|
##@package Item_SkillBook
|
# @todo: ʹÓü¼ÄÜÊéѧϰ¼¼ÄÜ
|
#
|
# @author zb
|
# @date 2010-05-26
|
# @version 1.4
|
#
|
# ÐÞ¸Äʱ¼ä ÐÞ¸ÄÈË ÐÞ¸ÄÄÚÈÝ
|
# @change: "2013-03-26 15:00" wdb ѧϰ¼¼ÄÜÐÞ¸Ä
|
# @change: "2013-04-17 20:35" Alee ±»¶¯¼¼ÄÜÖ±½ÓÌí¼ÓBUFF
|
# @change: "2013-10-14 13:30" hxp ÐÞ¸ÄʹÓü¼ÄÜÊémark
|
# @change: "2016-03-24 17:00" hxp ¼¼ÄÜËãÕ½¶·Á¦
|
#------------------------------------------------------------------------------
|
"""Version = 2016-03-24 17:00"""
|
#---------------------------------------------------------------------
|
import IPY_GameWorld
|
import ChConfig
|
import PlayerControl
|
import GameWorld
|
import SkillShell
|
import SkillCommon
|
import BuffSkill
|
import ItemCommon
|
import DataRecordPack
|
import ShareDefine
|
import EventShell
|
#---------------------------------------------------------------------
|
#È«¾Ö±äÁ¿
|
#---------------------------------------------------------------------
|
|
#---------------------------------------------------------------------
|
## ʹÓü¼ÄÜÊé
|
# @param curPlayer µ±Ç°Íæ¼Ò
|
# @param curRoleItem µ±Ç°Ö÷½ÇʹÓõÄÎïÆ·
|
# @param tick µ±Ç°Ê±¼ä
|
# @return True or None ·µ»ØÖµÎªÊÇ·ñʹÓóɹ¦(Íâ²ãÍ¨ÖªÌØÐ§)
|
# @remarks ¼¼ÄÜÊéЧ¹û1µÄAֵΪ¼¼ÄÜtypeID£¬Ð§¹û2µÄAֵΪ»õ±ÒÀàÐÍ£¬BֵΪ»õ±ÒÊýÁ¿
|
def UseItem(curPlayer, curRoleItem, tick):
|
return PlayerUseSkillBook(curPlayer, curRoleItem, tick)
|
|
#---------------------------------------------------------------------
|
## Íæ¼ÒʹÓü¼ÄÜÊé
|
# @param curPlayer µ±Ç°Íæ¼Ò
|
# @param curItem µ±Ç°ÎïÆ·
|
# @param tick µ±Ç°Ê±¼ä
|
# @return None or True
|
# @remarks
|
def PlayerUseSkillBook( curPlayer, curItem, tick ):
|
|
skillManager = curPlayer.GetSkillManager()
|
#Ч¹û1µÄAֵΪ¼¼ÄÜtypeID
|
curEffect = curItem.GetEffectByIndex(0)
|
skillTypeID = curEffect.GetEffectValue(0)
|
|
#ѧϰµÄ¼¼ÄÜ
|
bookSkill = GameWorld.GetGameData().FindSkillByType(skillTypeID,1)
|
if bookSkill == None:
|
GameWorld.Log("ѧϰ¼¼ÄÜÊéʧ°Ü,Î޴˼¼ÄÜ = %s"%(skillTypeID) , curPlayer.GetPlayerID())
|
return
|
|
#¼¼ÄÜÊé¼ì²é
|
if not __CheckSkillBook(curPlayer, curItem , bookSkill, skillTypeID):
|
return
|
GameWorld.DebugLog("¼¼ÄÜÊéѧϰ¼¼ÄÜ: skillTypeID=%s,name=%s" % (skillTypeID, bookSkill.GetSkillName()))
|
#ѧϰм¼ÄÜ
|
skillManager.LVUpSkillBySkillTypeID(skillTypeID)
|
PlayerControl.NotifyCode(curPlayer, "Skill_andyshao_31379", [skillTypeID])
|
|
DataRecordPack.DR_LearnORUPSkill(curPlayer, skillTypeID, 0)
|
ItemCommon.DelItem(curPlayer, curItem, 1, True, "SkillBook", {"SkillID":skillTypeID})
|
|
EventShell.EventRespons_LearnSkill(curPlayer, skillTypeID)
|
#ÊDZ»¶¯¼¼ÄÜÒªÖØË¢ÊôÐÔ
|
#if SkillCommon.isPassiveBuffSkill(bookSkill):
|
# BuffSkill.DoAddBuff(curPlayer, SkillCommon.GetBuffType(bookSkill), bookSkill, tick, [], curPlayer)
|
|
PlayerControl.PlayerControl(curPlayer).RefreshSkillFightPowerEx(skillTypeID, 0)
|
return True
|
|
#---------------------------------------------------------------------
|
## ¼ì²éʹÓü¼ÄÜÊéÌõ¼þ(²ÎÊý -> µ±Ç°Íæ¼Ò,µ±Ç°ÎïÆ·,¼¼ÄÜÊé¼¼ÄÜ)
|
# @param curPlayer µ±Ç°Íæ¼Ò
|
# @param curItem µ±Ç°ÎïÆ·
|
# @param skill ¼¼ÄÜÊé¼¼ÄÜ
|
# @param skillTypeID ¼¼ÄÜID
|
# @return False or True
|
# @remarks
|
def __CheckSkillBook(curPlayer, curItem, skillData, skillTypeID):
|
|
#ÒѾ¼¤»îÁ˵ļ¼ÄÜÎÞ·¨ÔÙ´ÎʹÓü¼ÄÜÊé
|
if curPlayer.GetSkillManager().FindSkillBySkillTypeID(skillTypeID):
|
#Skill_andyshao_0Ìæ»»ÎªGeRen_chenxin_739689
|
PlayerControl.NotifyCode(curPlayer, "GeRen_chenxin_739689")
|
return False
|
|
#ѧϰÌõ¼þ¼ì²é
|
if not SkillShell.CheckLearnSkillCondition(curPlayer, skillData):
|
return False
|
|
#ѧϰ¼¼ÄÜËùÐè»õ±ÒÀàÐÍ¡¢»õ±ÒÊýÁ¿
|
curEffect = curItem.GetEffectByIndex(1)
|
skillLVNeedMoneyType = curEffect.GetEffectValue(0)
|
skillLVNeedMoneyCount = curEffect.GetEffectValue(1)
|
|
if skillLVNeedMoneyCount > 0:
|
#¸¶Ç®
|
if not PlayerControl.PayMoney(curPlayer, skillLVNeedMoneyType, skillLVNeedMoneyCount):
|
return False
|
|
return True
|
|
#---------------------------------------------------------------------
|
## ¸øÓè¿Í»§¶ËDEBUGÌáʾ
|
# @param curPlayer µ±Ç°Íæ¼Ò
|
# @param curItem µ±Ç°ÎïÆ·
|
# @param skill ¼¼ÄÜÊé¼¼ÄÜ
|
# @return False or True
|
# @remarks ÌáʾÔÚ¿Í»§¶ËµÄdebugƵµÀÉÏÏÔʾ
|
def Log( curPlayer, msg ):
|
GameWorld.DebugAnswer(curPlayer, msg )
|
return
|