Skin
Game Sections
- Unreal
- Unreal: RTNP
- Unreal II
- Unreal Tournament
- UT2003
- UT2004
- Unreal Tournament 3
- Unreal Championship
- Unreal Championship 2
Personal tools
File talk:UT3 Raptor primary damage.png
From Liandri Archives
Here's is the source code if someone wants to improve the figure:
#!/usr/bin/env python3
import numpy as np
import matplotlib.pyplot as plt
base_damage = 20
base_life_span = 1.6
max_speed = 12500.0
base_speed = 2000.0
accel_rate = 20000.0
def damage(time_in_flight):
life_span = base_life_span - time_in_flight
speed = min(base_speed + time_in_flight * accel_rate, max_speed)
if life_span <= 0:
return 0
elif life_span < 1.0:
return 0.75 * base_damage
else:
return base_damage * min(2.0, (max_speed / speed) ** 2)
# note: function unused, and might be wrong
def distance(time_in_flight):
t = min(base_life_span, time_in_flight)
t1 = (max_speed - base_speed) / accel_rate # time to obtain max speed
assert t1 == 0.525
if t < t1:
return base_speed * t + accel_rate * 0.5 * t * t
else:
return base_speed * t1 + accel_rate * 0.5 * t1 * t1 + max_speed * (t - t1)
def main():
t = np.linspace(0.0, 1.7, 1000)
damage_t = np.vectorize(damage)(t)
distance_t = np.vectorize(distance)(t)
plt.title("Raptor primary fire damage scaling")
plt.xlabel("Time in flight")
plt.ylabel("Damage")
plt.plot(t, damage_t)
plt.axis([0.0, 1.7, 0.0, 50])
plt.yticks([40, 30, 20, 15, 10, 0])
plt.grid()
plt.annotate("Projectile's life span ends", xy=(1.6, 15.0), xytext=(1.0, 20), arrowprops=dict(arrowstyle="->"))
plt.subplots_adjust(bottom=0.2)
plt.show()
if __name__ == "__main__":
main()
--WGH 13:16, 16 February 2014 (CST)