COLLECTOR IS DOGSHIT JUST BY LDR
End of topic, Collector has so little places where it’s viable and even when it’s viable it’s only for a very short period. Just fucking buy LDR like a normal person and benefit from more damage in 99.95% (i pulled this number out of my ass) scenarios.
To show you how dogshit this item is let’s look at someone who seems like a champion who can benefit from Collector, Zed. At level 9, with 86 base AD, 10 AD from runes and 10 AD from Doran’s Blade he deals MORE damage with LDR to targets with more than 54 armor. Yea…
Explanation of inputs:
- 240 base damage because Zed’s max Q deals 240 damage,
- 1.0 AD scaling because it deals 100% of bonus AD,
- AD 20 because we have 20 bonus AD.
- None since we don’t have either LDR or Collector at the time of inserting stats, the script calculates the ad + leth/pen on its own.
LeBlanc’s armor at level 9 is 53…
Anyway here is the script ChatGPT wrote and I debugged as proof:
(I am not giving it as a download, just fucking copy it)
import matplotlib.pyplot as plt
from matplotlib.widgets import TextBox, RadioButtons
# Initial values
base_dmg = 0 # Set an initial value for base_dmg
ad_scaling = 1.0 # Set an initial value for ad_scaling
ad = 100 # Set an initial value for bonus_ad
ldr_none = 45
ldr_col = -15
ldr_ldr = 0
col_none = 60
col_ldr = 15
col_col = 0
def define_formulas(base_dmg, ad_scaling, ad, col_ad: int, ldr_ad: int):
collector = [(base_dmg + ad_scaling * (ad + col_ad)) * (100/(100+(armor-12))) for armor in x]
ldr = [(base_dmg + ad_scaling * (ad + ldr_ad)) * (100/(100+(armor*0.65))) for armor in x]
return collector, ldr
# Update function for the text boxes and radio buttons
def update(val):
# Get the current values from the text boxes
base_dmg = float(base_dmg_box.text)
ad_scaling = float(ad_scaling_box.text)
ad = float(ad_box.text)
# Get the current selection from the radio buttons
selection = radio.value_selected
if selection == 'None':
ldr_ad = ldr_none
col_ad = col_none
elif selection == 'LDR':
ldr_ad = ldr_ldr
col_ad = col_ldr
elif selection == 'Collector':
ldr_ad = ldr_col
col_ad = col_col
# Recalculate ldr and collector
collector, ldr = define_formulas(base_dmg, ad_scaling, ad, col_ad, ldr_ad)
# Update the lines
ldr_line.set_ydata(ldr)
collector_line.set_ydata(collector)
# Update the intersection point
try:
intersection_index = next(i for i in x if ldr[i] > collector[i])
except StopIteration:
intersection_index = 0 # If no intersection, default to 0
# Update the vertical line and text with a list for x data
vline.set_xdata([intersection_index])
# Update the text position and content
text.set_position((intersection_index, 400))
text.set_text(f'{intersection_index}')
fig.canvas.draw_idle()
# Create the plot
fig, ax = plt.subplots()
plt.subplots_adjust(left=0.25, bottom=0.4)
x = range(300)
# Calculate initial values
collector, ldr = define_formulas(base_dmg, ad_scaling, ad, col_none, ldr_none)
# Find the first point where ldr > collector
intersection_index = next(i for i in x if ldr[i] > collector[i])
# Plot the initial lines
ldr_line, = plt.plot(x, ldr, label="LDR")
collector_line, = plt.plot(x, collector, label="Collector")
# Plot a vertical dotted line at the intersection point
vline = plt.axvline(x=intersection_index, color='red', linestyle='--', label='Intersection')
# Display the intersection index as text
text = plt.text(intersection_index, 400, f'{intersection_index}', color='red', verticalalignment='top')
# Set axis labels
ax.set_xlabel('Armor')
ax.set_ylabel('eDmg')
plt.legend()
# Set y-axis range to 0-400
plt.ylim(0, 400)
# Add input fields for base_dmg, ad_scaling, and bonus_ad
ax_base_dmg = plt.axes([0.25, 0.25, 0.65, 0.03])
ax_ad_scaling = plt.axes([0.25, 0.2, 0.65, 0.03])
ax_bonus_ad = plt.axes([0.25, 0.15, 0.65, 0.03])
base_dmg_box = TextBox(ax_base_dmg, 'Base Damage', initial=str(base_dmg))
ad_scaling_box = TextBox(ax_ad_scaling, 'AD Scaling', initial=str(ad_scaling))
ad_box = TextBox(ax_bonus_ad, 'AD', initial=str(ad))
# Add radio buttons for the dropdown selection
rax = plt.axes([0.05, 0.4, 0.15, 0.15])
radio = RadioButtons(rax, ('None', 'LDR', 'Collector'), active=0)
# Attach the update function to the text boxes and radio buttons
base_dmg_box.on_submit(update)
ad_scaling_box.on_submit(update)
ad_box.on_submit(update)
radio.on_clicked(update)
plt.show()
Is it right? IDFK I might be wrong but I don’t see anything braindead here. Now for the limitations:
- Collector’s passive is not included (not like it fucking matters in 99% of cases)
- It compares ONLY Collector vs LDR, assuming there is no additional Lethality/Pen