|
¥È¥Ã¥× > MAPºîÀ® > Jass Script > ¥é¥¤¥Ö¥é¥ê½¸ > Damage Modify »ØÄꤷ¤¿¥æ¥Ë¥Ã¥È¤Ë»ØÄꤷ¤¿ÃͤÀ¤±¥À¥á¡¼¥¸Ãͤò¾å¾º¤µ¤»¤ë¡£ ¥é¥¤¥Ö¥é¥ê//²¼½àÈ÷
//¡¡¢¥ª¥Ö¥¸¥§¥¯¥È¥¨¥Ç¥£¥¿¤ÇItem Damage Bonus('AIfg'Åù)¤òBase¤Ë¤·¤¿¥¹¥¥ë¤òÊ£¿ôÍѰդ·¤Æ¤¯¤À¤µ¤¤¡£
//
//¢¡¢¤¹¤Ù¤Æ¤Î¥¹¥¥ë¤Î¥ì¥Ù¥ë¤ò2¤ËÀßÄꤷ¡¢¥ì¥Ù¥ë1¤Î¥À¥á¡¼¥¸Ãͤò0
//¥ì¥Ù¥ë2¤Î¥À¥á¡¼¥¸Ãͤò¤½¤ì¤¾¤ì1,2,4,8,16,32,64,128,256,512....¤Ë¤·¤Æ¤¯¤À¤µ¤¤
//(°Ê²¼¡¢¤½¤ì¤é¤òdamage+1,damage+2,damage+4....¤È¸Æ¤Ó¤Þ¤¹¡£)
//
//£¡¢Spell Book('Aspb')¤òBase¤Ë¤·¤¿¥¹¥¥ë¤ò1¤ÄÍѰդ·¤Æ¤¯¤À¤µ¤¤¡£
//Maximum Spells¤ÈMinimum Spells¤ÎÃͤò¢¤Çºî¤Ã¤¿Damage Bonus¤Î¥¹¥¥ë¤Î¿ô¤ÈƱ¤¸¤Ë¤·¤Æ¡¢
//Spell List¤Ë¢¤Çºî¤Ã¤¿¥¹¥¥ë¤¹¤Ù¤Æ¤òÆþ¤ì¤Þ¤¹¡£¤³¤³¤Ç¤ÏSpell book = 'A006'¤Ç¤¹¡£
//===========================================================================
globals
//¥À¥á¡¼¥¸¤ò¾å¤²¤ëskill¤ÎID¤ò³ÊǼ¤¹¤ëglobalÊÑ¿ô¤òÄêµÁ
integer array bonusID
endglobals
//===========================================================================
library ModifyDamageBonus initializer SetBonusID
private function SetBonusID takes nothing returns nothing
//Initializer¤ò»È¤Ã¤ÆºÇ½é¤ËglobalÊÑ¿ô¤ËID¤òÂåÆþ¤µ¤»¤Þ¤¹¡£
set bonusID[0] = 'A00H' //damage+1
set bonusID[1] = 'A00G' //damage+2
set bonusID[2] = 'A00F' //damage+4
set bonusID[3] = 'A00E' //damage+8
set bonusID[4] = 'A007' //damage+16
set bonusID[5] = 'A008' //damage+32
set bonusID[6] = 'A009' //damage+64
set bonusID[7] = 'A00A' //damage+128
set bonusID[8] = 'A00B' //damage+256
set bonusID[9] = 'A00C' //damage+512
set bonusID[10] = 'A00D' //damage+1024
//°Ê²¼¡¢Æ±¤¸¤è¤¦¤Ë¹¥¤¤Ê¿ô¤À¤±¥¹¥¥ë¤òºî¤Ã¤ÆÀßÄꤷ¤Æ¤¯¤À¤µ¤¤¡£¤³¤³¤Ç¤Ï11¸Ä¤À¤±ºîÀ®¤·¤Þ¤·¤¿
endfunction
function ModifyDamage takes unit u,integer dam returns nothing
local integer i = 0
//Spell book¤ò»ý¤Ã¤Æ¤¤¤Ê¤¤¾ì¹ç¥æ¥Ë¥Ã¥È¤ËÄɲÃ
if GetUnitAbilityLevel(u,'A006') == 0 then
call SetPlayerAbilityAvailable(GetOwningPlayer(u),'A006',false) //Spell Book¤¬¸«¤¨¤Ê¤¤¤è¤¦¤Ë¤¹¤ë½èÍý
call UnitAddAbility(u,'A006')
endif
loop
exitwhen dam < 1 or i >= 11 // i¤ÎºÇÂçÃͤòºî¤Ã¤¿¥À¥á¡¼¥¸¥¹¥¥ë¤Î¿ô¤ÈƱ¤¸¤Ë¤¹¤ë
if dam == 2*(dam/2) + 1 then
call SetUnitAbilityLevel(u,bonusID[i],2)
else
call SetUnitAbilityLevel(u,bonusID[i],1)
endif
set dam = dam / 2
set i = i + 1
endloop
endfunction
//===========================================================================
//Damage Modify¤ò¼è¤ê½ü¤¯function
function RemoveModifyDamage takes unit whichunit returns nothing
call UnitRemoveAbility(whichunit,'A006')
endfunction
endlibrary
//===========================================================================
»È¤¤Êý¤Î¥µ¥ó¥×¥ëgg_unit_H000_0000¤Î¥À¥á¡¼¥¸Ãͤò20ÉôÖgg_unit_H000_0000¤ÎºÇÂçHP¤Î5%¤À¤±¾å¾º¤µ¤»¤ë
//===========================================================================
function Damage_Bonus_Sample takes nothing returns nothing
call ModifyDamage(gg_unit_H000_0000,GetUnitState(gg_unit_H000_0000,UNIT_STATE_MAX_LIFE)*.05)
call TriggerSleepAction(20)
call RemoveModifyDamage(gg_unit_H000_0000)
endfunction
//===========================================================================
Î㤨¤Ðgg_unit_H000_0000¤ÎºÇÂçHP¤¬1425¤À¤Ã¤¿¾ì¹ç¡¢¥À¥á¡¼¥¸¤Ï1425*0.05=71(¾®¿ôÅÀ°Ê²¼ÀÚ¼Î)¾å¾º¤·¤Þ¤¹¡£ ½èÍý¤ÎÀâÌÀ´ðËÜŪ¤Ê¸¶Íý¤Ï10¿Ê¿ô¤«¤é2¿Ê¿ô¤Ø¤ÎÊÑ´¹ 71¤Î2¿Ê¿ôɽµ¢ª1000111 = 1+2+4+64 ¤È¤Ê¤êdamage+1,+2,+4,+64¤Î4¤Ä¤ò»ý¤¿¤»¤ì¤ÐÎɤ¤¤ï¤±¤Ç¤¹¡£ »ØÄꤵ¤ì¤¿¥À¥á¡¼¥¸Ãͤò2¤Ç³ä¤ê¡¢Í¾¤ê¤¬½Ð¤¿¤é¥¹¥¥ë¤Î¥ì¥Ù¥ë¤ò2¤Ë¤·¤Æ¡¢Í¾¤ê¤¬0¤Ê¤é¥ì¥Ù¥ë¤ò0¤Ë¤·¤Æ¤¤¤Þ¤¹¡£ ɬÍפʥ饤¥Ö¥é¥ê¤Ê¤· |