¥È¥Ã¥× > 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¤Ë¤·¤Æ¤¤¤Þ¤¹¡£ ɬÍפʥ饤¥Ö¥é¥ê¤Ê¤· |