Base Damage Calculator

Discussion about the technical aspects of scripting. Ask about all issues involving your freelance projects here.
Locked
User avatar
debeza
Elder Scribe
Posts: 169
Joined: Mon May 31, 2010 8:11 am

Base Damage Calculator

Post by debeza »

I left a post showing the minimum and maximum base damage for a Yumi wielding character with 130 tactics and 130 anatomy at every strength level from 163 to 418. This script takes that a few steps further and allows the user to plug in whatever information for whatever weapon and at whatever tactics, anatomy, and strength levels. The script will then respond with the minimum and maximum base damage.

The formula I used is based on the UO Stratics website. I tested the results given from this script for quite a few different strength levels and it was correct every time. If you happen to find an error, please let me know; or better yet, respond with the corrections. :)


Code: Select all


  ; ****************************************************
  ; *  Beza's Base Damage Calculator                   *
  ; *  The user plugs in the information and the       *
  ; *  script gives the minimum and maximum base       *
  ; *  damage.                                         *
  ; ****************************************************
  
    menu clear
    menu show
    menu window size 400 400
    menu Window Title Damage Calculator
    menu Text MinimumBaseDamageText 10 20 Min Base Damage of Weapon:
    menu Edit MinBaseDamageEdit 220 20 50 18
    
    menu Text MaximumBaseDamageText 10 60 Max Base Damage of Weapon:
    menu Edit MaxBaseDamageEdit 220 60 50 20
    
    menu Text StrengthText 10 100 Character Strength:
    menu Edit StrengthEdit 220 100 50
    
    menu Text TacticsText 10 140 Tactics:
    menu Edit TacticsEdit 220 140 50 130
    
    menu Text AnatomyText 10 180 Anatomy:
    menu Edit AnatomyEdit 220 180 50 130
    
    menu Text LumberjackingText 10 220 Lumberjacking:
    menu Edit LumberjackingEdit 220 220 50 120
    
    menu Text DamageIncreaseText 10 260 Damage Increase %:
    menu Edit DamageIncreaseEdit 220 260 50 100
    
    menu Text AxeWeaponText 10 300 Axe Weapon:
    menu combo create AxeWeaponCombo 220 300 50
    menu combo add AxeWeaponCombo No
    menu combo add AxeWeaponCombo Yes
    
    menu Button Calculate 10 350 90 25 Calculate
    
    ;menu get MinBaseDamageEdit
    ;menu get MaxBaseDamageEdit
    ;menu get StrengthEdit
    ;menu get TacticsEdit
    ;menu get AnatomyEdit
    ;menu get LumberjackingEdit
    ;menu get DamageIncreaseEdit
    ;menu get AxeWeaponCombo


    set #MENUBUTTON n/a


    loop:
    if #MENUBUTTON = Calculate
{
   menu get minBaseDamageEdit
   set %minBaseDamageEdit #menures
   wait 2
   menu get maxBaseDamageEdit
   set %maxBaseDamageEdit #menures
   wait 2
   menu get StrengthEdit
   set %strengthEdit #menures
   wait 2
   menu get TacticsEdit
   set %tacticsEdit #menures
   wait 2
   menu get AnatomyEdit
   set %anatomyEdit #menures
   wait 2
   menu get LumberjackingEdit
   set %lumberjackingEdit #menures
   wait 2
   menu get DamageIncreaseEdit
   set %damageIncreaseEdit #menures
   wait 2
   menu get AxeWeaponCombo
   set %axeWeaponCombo #menures

   
   ; setting up tactics bonus
   set %tacticsDividerX625 ( %tacticsEdit * 625 )
   set %tacticsAdder 6250 ; 6.25
   set %tacticsAdjustedBonus   %tacticsDividerX625
   if %tacticsEdit => 100
   {
   set %tacticsAdjustedBonus ( %tacticsAdjustedBonus +  %tacticsAdder )
      }
   set %tacticsBonus ( %tacticsAdjustedBonus )

   
   ; setting up anatomy bonus
  set %anatomyBonus  ( %anatomyEdit / 2 )
  if %anatomyEdit => 100
  {
  set %anatomyBonus ( %anatomyBonus + 5 )
  set %anatomyBonus ( %anatomyBonus * 1000 )

  }

  
  ; setting up Strength Bonus
  set %strengthAdjustedBonus ( %strengthEdit * 3 )
  if %strengthEdit => 100
  {
  set %strengthAdjustedBonus ( %strengthAdjustedBonus + 50 )
    }
   set %strengthBonus ( %strengthAdjustedBonus * 100 )

   
  ; setting up Damage Increase  (capped at 100%)
  set %damageIncrease ( %damageIncreaseEdit * 1000 )

  wait 1
  
  ; setting up Lumberjacking Bonus
  if %axeWeaponCombo = 1
  {
  set %lumberjackingBonus 0
  }
  
  if %axeWeaponCombo = 2
  {
  set %lumberjackingBonus ( %lumberjackingEdit / 5 )
  if %lumberjackingEdit => 100
  {
  set %lumberjackingBonus ( %lumberjackingBonus + 10 )
  }
  }
  ; setting up Min and Max Damage
  set %minDamage %minBaseDamageEdit
  set %maxDamage %maxBaseDamageEdit
  

  
  ; CALCULATING
  set %finalDamageBonus ( %tacticsBonus + %anatomyBonus + %lumberjackingBonus + %strengthBonus + %damageIncrease )
  set %finalDamageBonus ( %finalDamageBonus / 1000 )
  set %minFinalDamage ( %minDamage + ( %minDamage * %finalDamageBonus ) / 100 )

  set %maxFinalDamage ( %maxDamage + ( %maxDamage * %finalDamageBonus ) / 100 )

  wait 2

  display ok  Damage: %minFinalDamage - %maxFinalDamage
  
  halt
  
      

   
   
   
   
   
   
   

    
    }
    
    goto loop
     wait 1s
     
    

    


Locked