[ ÊÔ½¸¤³¤Î¥Ú¡¼¥¸¤òÊÔ½¸¤¹¤ë ]

¥È¥Ã¥× > 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¾å¾º¤µ¤»¤ë¤Ë¤Ï

71¤Î2¿Ê¿ôɽµ­¢ª1000111 = 1+2+4+64

¤È¤Ê¤êdamage+1,+2,+4,+64¤Î4¤Ä¤ò»ý¤¿¤»¤ì¤ÐÎɤ¤¤ï¤±¤Ç¤¹¡£

»ØÄꤵ¤ì¤¿¥À¥á¡¼¥¸Ãͤò2¤Ç³ä¤ê¡¢Í¾¤ê¤¬½Ð¤¿¤é¥¹¥­¥ë¤Î¥ì¥Ù¥ë¤ò2¤Ë¤·¤Æ¡¢Í¾¤ê¤¬0¤Ê¤é¥ì¥Ù¥ë¤ò0¤Ë¤·¤Æ¤¤¤Þ¤¹¡£
¤³¤³¤Ç¤ÏÀ°¿ô¤Î³ä¤ê»»¤Ï¾®¿ôÅÀ¤¬ÀÚ¤ê¼Î¤Æ¤é¤ì¤ë¤³¤È¤òÍøÍѤ·¤Æ¡¢if dam == 2*(dam/2) + 1 then¤Ç;¤ê¤¬1¤«0¤«¤òȽÄꤵ¤»¤Æ¤¤¤Þ¤¹¡£(¤³¤Î¼°¤¬À®Î©¤¹¤ì¤Ð;¤ê¤Ï1)
¤³¤Î½èÍý¤ò¥À¥á¡¼¥¸Ãͤ¬1¤Ë¤Ê¤ë¤«¡¢½àÈ÷¤·¤¿¥À¥á¡¼¥¸¥¹¥­¥ë¤Î¿ô¤òĶ¤¨¤ë¤Þ¤Ç³¤±¤Æ¤¤¤Þ¤¹¡£

ɬÍפʥ饤¥Ö¥é¥ê

¤Ê¤·