2024-07-05 15:19:50 +00:00
import numpy as np
import pandas as pd
import math
import sys
import os
print ( os . getcwd ( ) )
# Ctrl-Alt-N to run code in VSCode
2024-07-05 16:14:27 +00:00
rarity = { ' Legendary ' : ' <gold> ' , ' Epic ' : ' <light_purple> ' ,
' Rare ' : ' <dark_aqua> ' , ' Uncommon ' : ' <green> ' , ' Common ' : ' <white> ' , ' Quest ' : ' <red> ' , ' Grove Staff ' : ' <#f558b4> ' , ' Admin Staff ' : ' <dark_red> ' }
2024-07-05 15:19:50 +00:00
2024-07-05 16:14:27 +00:00
rarity_sub = { ' Legendary ' : ' <red> ' , ' Epic ' : ' <dark_purple> ' ,
' Rare ' : ' <blue> ' , ' Uncommon ' : ' <dark_green> ' , ' Common ' : ' <gray> ' , ' Quest ' : ' <gray> ' , ' Grove Staff ' : ' <#f50a93> ' , ' Admin Staff ' : ' <red> ' }
2024-07-05 15:19:50 +00:00
# Replace filename with whatever the downloaded entry form sheet is called
filename = ' ItemEntry.csv '
df = pd . DataFrame ( )
df = pd . read_csv ( filename )
df . drop_duplicates ( subset = [ ' Item Name ' , ' Item Lore ' ,
' What Crate is this Item meant for? ' ] )
# New header line
df . columns = [ ' timestamp ' , ' rarity ' , ' name ' , ' lore ' , ' itemtype ' , ' ARROW_DAMAGE ' , ' ARROW_FIRE ' , ' ARROW_INFINITE ' , ' ARROW_KNOCKBACK ' , ' BINDING_CURSE ' , ' CHANNELING ' , ' DAMAGE_ALL ' , ' DAMAGE_ARTHROPODS ' , ' DAMAGE_UNDEAD ' , ' DEPTH_STRIDER ' , ' DIG_SPEED ' , ' DURABILITY ' , ' FIRE_ASPECT ' , ' FROST_WALKER ' , ' IMPALING ' , ' KNOCKBACK ' , ' LOOT_BONUS_BLOCKS ' , ' LOOT_BONUS_MOBS ' ,
' LOYALTY ' , ' LUCK ' , ' LURE ' , ' MENDING ' , ' MULTISHOT ' , ' OXYGEN ' , ' PIERCING ' , ' PROTECTION_ENVIRONMENTAL ' , ' PROTECTION_EXPLOSIONS ' , ' PROTECTION_FALL ' , ' PROTECTION_FIRE ' , ' PROTECTION_PROJECTILE ' , ' QUICK_CHARGE ' , ' RIPTIDE ' , ' SILK_TOUCH ' , ' SOUL_SPEED ' , ' SWEEPING_EDGE ' , ' SWIFT_SNEAK ' , ' THORNS ' , ' VANISHING_CURSE ' , ' WATER_WORKER ' , ' crate ' , ' seasonal ' , ' seasonaltype ' , ' amount ' , ' trim ' , ' trimtype ' , ' trimmat ' ]
df = df . replace ( np . nan , ' ' )
print ( df )
daily = df [ df [ " crate " ] == " Daily Crate " ]
weekly = df [ df [ " crate " ] == " Weekly Crate " ]
quest = df [ df [ " crate " ] == " Quest Crate " ]
2024-07-05 16:14:27 +00:00
enchant_map = { ' ARROW_DAMAGE ' : ' power ' , ' ARROW_FIRE ' : ' flame ' , ' ARROW_INFINITE ' : ' infinity ' , ' ARROW_KNOCKBACK ' : ' punch ' , ' BINDING_CURSE ' : ' binding_curse ' , ' CHANNELING ' : ' channeling ' , ' DAMAGE_ALL ' : ' sharpness ' , ' DAMAGE_ARTHROPODS ' : ' bane_of_arthropods ' , ' DAMAGE_UNDEAD ' : ' smite ' , ' DEPTH_STRIDER ' : ' depth_strider ' , ' DIG_SPEED ' : ' efficiency ' , ' DURABILITY ' : ' unbreaking ' , ' FIRE_ASPECT ' : ' fire_aspect ' , ' FROST_WALKER ' : ' frost_walker ' , ' IMPALING ' : ' impaling ' , ' KNOCKBACK ' : ' knockback ' , ' LOOT_BONUS_BLOCKS ' : ' fortune ' , ' LOOT_BONUS_MOBS ' : ' looting ' , ' LOYALTY ' : ' loyalty ' , ' LUCK ' : ' luck_of_the_sea ' , ' LURE ' : ' lure ' , ' MENDING ' : ' mending ' , ' MULTISHOT ' : ' multishot ' , ' OXYGEN ' : ' respiration ' , ' PIERCING ' : ' piercing ' , ' PROTECTION_ENVIRONMENTAL ' : ' protection ' , ' PROTECTION_EXPLOSIONS ' : ' blast_protection ' , ' PROTECTION_FALL ' : ' feather_falling ' , ' PROTECTION_FIRE ' : ' fire_protection ' , ' PROTECTION_PROJECTILE ' : ' projectile_protection ' , ' QUICK_CHARGE ' : ' quick_charge ' , ' RIPTIDE ' : ' riptide ' , ' SILK_TOUCH ' : ' silk_touch ' , ' SOUL_SPEED ' : ' soul_speed ' , ' SWEEPING_EDGE ' : ' sweeping_edge ' , ' SWIFT_SNEAK ' : ' swift_sneak ' , ' THORNS ' : ' thorns ' , ' VANISHING_CURSE ' : ' vanishing_curse ' , ' WATER_WORKER ' : ' aqua_affinity ' }
old_names = [ ' ARROW_DAMAGE ' , ' ARROW_FIRE ' , ' ARROW_INFINITE ' , ' ARROW_KNOCKBACK ' , ' BINDING_CURSE ' , ' CHANNELING ' , ' DAMAGE_ALL ' , ' DAMAGE_ARTHROPODS ' , ' DAMAGE_UNDEAD ' , ' DEPTH_STRIDER ' , ' DIG_SPEED ' , ' DURABILITY ' , ' FIRE_ASPECT ' , ' FROST_WALKER ' , ' IMPALING ' , ' KNOCKBACK ' , ' LOOT_BONUS_BLOCKS ' , ' LOOT_BONUS_MOBS ' , ' LOYALTY ' , ' LUCK ' , ' LURE ' , ' MENDING ' , ' MULTISHOT ' , ' OXYGEN ' , ' PIERCING ' , ' PROTECTION_ENVIRONMENTAL ' , ' PROTECTION_EXPLOSIONS ' , ' PROTECTION_FALL ' , ' PROTECTION_FIRE ' , ' PROTECTION_PROJECTILE ' , ' QUICK_CHARGE ' , ' RIPTIDE ' , ' SILK_TOUCH ' , ' SOUL_SPEED ' , ' SWEEPING_EDGE ' , ' SWIFT_SNEAK ' , ' THORNS ' , ' VANISHING_CURSE ' , ' WATER_WORKER ' ]
2024-07-05 15:19:50 +00:00
# Write Header (Daily Crate)
with open ( ' tdvc.yml ' , ' w ' ) as f :
2024-07-05 16:14:27 +00:00
f . write ( " Crate: \n CrateType: CSGO \n CrateName: ' <yellow><b>Daily Vote Crate ' \n Preview-Name: ' <yellow><b>Daily Vote Crate Preview ' \n StartingKeys: 0 \n InGUI: false \n Slot: 13 \n OpeningBroadCast: False \n BroadCast: ' <yellow>* % Player % <yellow>is opening a <gold>Daily Vote Crate<yellow>! (/vote) ' \n Item: ' CHEST ' \n Glowing: false \n Name: ' <yellow>Daily Vote Crate ' \n Lore: \n - ' <gray>This crate contains strange objects. ' \n - ' <gray>You have <gold> % Keys % keys <gray>to open this crate with. ' \n - ' <gray><b>(<yellow><b>!<gray><b>) Right click to view rewards. ' \n " )
f . write ( " PhysicalKey: \n Name: ' <red>Daily Vote Crate Key ' \n DisplayLore: \n - ' <gray>Vote on 5 sites every day! ' \n - ' <gray>Unlock this crate at spawn. ' \n Item: ' tripwire_hook ' \n Glowing: True \n Prizes: \n " )
2024-07-05 15:19:50 +00:00
# Prizes
for index , row in daily . iterrows ( ) :
f . write ( " " + str ( index + 1 ) + " : \n " )
if row [ ' name ' ] == ' ' :
f . write ( " DisplayName: ' ' \n " )
else :
f . write ( " DisplayName: ' " +
str ( rarity [ row [ ' rarity ' ] ] ) + row [ ' name ' ] . replace ( " ' " , " ' ' " ) + " ' \n " )
2024-07-05 16:14:27 +00:00
f . write ( " DisplayItem: ' " + row [ ' itemtype ' ] . lower ( ) + " ' \n " )
2024-07-05 15:19:50 +00:00
if row [ ' trim ' ] == ' Yes ' :
f . write ( " DisplayTrim: \n Material: ' " + row [ ' trimmat ' ] + " ' \n Pattern: ' " + row [ ' trimtype ' ] + " ' \n " )
if row [ ' name ' ] == ' ' :
f . write ( " DisplayAmount: " +
2024-07-05 16:14:27 +00:00
str ( int ( row [ ' amount ' ] ) ) + " \n DisplayLore: \n - ' " + str ( rarity_sub [ row [ ' rarity ' ] ] ) + " Win some " + row [ ' itemtype ' ] . replace ( " _ " , " " ) . title ( ) . lower ( ) + " ' \n " )
2024-07-05 15:19:50 +00:00
else :
f . write ( " DisplayAmount: " +
2024-07-05 16:14:27 +00:00
str ( int ( row [ ' amount ' ] ) ) + " \n DisplayLore: \n - ' " + str ( rarity_sub [ row [ ' rarity ' ] ] ) + " Win the " + row [ ' name ' ] . replace ( " ' " , " ' ' " ) + " ' \n " )
2024-07-05 15:19:50 +00:00
2024-07-05 16:14:27 +00:00
f . write ( " MaxRange: 75 \n Chance: 1 \n Firework: false \n Glowing: false \n Player: ' ' \n Unbreakable: false \n Items: \n - ' Item: " + row [ ' itemtype ' ] . lower ( ) + " , Amount: " +
2024-07-05 15:19:50 +00:00
str ( int ( row [ ' amount ' ] ) ) )
if row [ ' trim ' ] == ' Yes ' :
f . write ( " , Trim-Material: " + row [ ' trimmat ' ] + " , Trim-Pattern: " + row [ ' trimtype ' ] )
if row [ ' name ' ] == ' ' :
f . write ( " " )
else :
f . write ( " , Name: " + str ( rarity [ row [ ' rarity ' ] ] ) + row [ ' name ' ] . replace ( " ' " , " ' ' " ) + " , Lore: " )
if row [ ' name ' ] == ' ' :
f . write ( " " )
else :
if " , " in row [ ' lore ' ] :
f . write ( " MANUAL LORE PLEASE " )
else :
f . write ( str ( rarity_sub [ row [ ' rarity ' ] ] ) +
row [ ' lore ' ] . replace ( " ' " , " ' ' " ) )
idx = pd . IndexSlice
2024-07-05 16:14:27 +00:00
enchants = row [ old_names ]
2024-07-05 15:19:50 +00:00
enchants . replace ( ' ' , np . nan , inplace = True )
2024-07-05 16:14:27 +00:00
enchants = enchants . apply ( pd . to_numeric , errors = ' ignore ' , downcast = ' integer ' )
2024-07-05 15:19:50 +00:00
enchants . dropna ( how = ' all ' , inplace = True )
2024-07-05 16:14:27 +00:00
enchants = enchants . rename ( index = enchant_map )
for label , content in enchants . items ( ) :
2024-07-05 15:19:50 +00:00
f . write ( " , " + label + " : " + str ( int ( content ) ) )
f . write (
" ' \n BlackListed-Permissions: {} \n Alternative-Prize: \n Toggle: false \n Messages: {} \n Commands: {} \n Items: {} \n " )
# Write Header (Weekly Crate)
with open ( ' twvc.yml ' , ' w ' ) as f :
2024-07-05 16:14:27 +00:00
f . write ( " Crate: \n CrateType: CSGO \n CrateName: ' <aqua><b>Weekly Vote Crate ' \n Preview-Name: ' <aqua><b>Weekly Vote Crate Preview ' \n StartingKeys: 0 \n InGUI: false \n Slot: 15 \n OpeningBroadCast: False \n BroadCast: ' <dark_aqua>* % Player % <dark_aqua>is opening a <aqua>Weekly Vote Crate<dark_aqua>! (/vote) ' \n Item: ' CHEST ' \n Glowing: false \n Name: ' <aqua>Weekly Vote Crate ' \n DisplayLore: \n - ' <gray>Vote 36 times in a week gets a key. ' \n - ' <gray>You have <aqua> % Keys % keys <gray>to open this crate with. ' \n - ' <gray><b>(<aqua><b>!<gray><b>) Right click to view rewards. ' \n " )
f . write ( " PhysicalKey: \n Name: ' <red>Weekly Vote Crate Key ' \n DisplayLore: \n - ' <gray>Vote 36 times in a week gets a key. ' \n - ' <gray>Unlock this crate at spawn. ' \n Item: ' tripwire_hook ' \n Glowing: True \n Prizes: \n " )
2024-07-05 15:19:50 +00:00
# Prizes
for index , row in weekly . iterrows ( ) :
f . write ( " " + str ( index + 1 ) + " : \n " )
if row [ ' name ' ] == ' ' :
f . write ( " DisplayName: ' ' \n " )
else :
f . write ( " DisplayName: ' " +
str ( rarity [ row [ ' rarity ' ] ] ) + row [ ' name ' ] . replace ( " ' " , " ' ' " ) + " ' \n " )
2024-07-05 16:14:27 +00:00
f . write ( " DisplayItem: ' " + row [ ' itemtype ' ] . lower ( ) + " ' \n " )
2024-07-05 15:19:50 +00:00
if row [ ' trim ' ] == ' Yes ' :
f . write ( " DisplayTrim: \n Material: ' " + row [ ' trimmat ' ] + " ' \n Pattern: ' " + row [ ' trimtype ' ] + " ' \n " )
if row [ ' name ' ] == ' ' :
f . write ( " DisplayAmount: " +
2024-07-05 16:14:27 +00:00
str ( int ( row [ ' amount ' ] ) ) + " \n DisplayLore: \n - ' " + str ( rarity_sub [ row [ ' rarity ' ] ] ) + " Win some " + row [ ' itemtype ' ] . replace ( " _ " , " " ) . title ( ) . lower ( ) + " ' \n " )
2024-07-05 15:19:50 +00:00
else :
f . write ( " DisplayAmount: " +
2024-07-05 16:14:27 +00:00
str ( int ( row [ ' amount ' ] ) ) + " \n DisplayLore: \n - ' " + str ( rarity_sub [ row [ ' rarity ' ] ] ) + " Win the " + row [ ' name ' ] . replace ( " ' " , " ' ' " ) + " ' \n " )
2024-07-05 15:19:50 +00:00
2024-07-05 16:14:27 +00:00
f . write ( " MaxRange: 75 \n Chance: 1 \n Firework: false \n Glowing: false \n Player: ' ' \n Unbreakable: false \n Items: \n - ' Item: " + row [ ' itemtype ' ] . lower ( ) + " , Amount: " +
2024-07-05 15:19:50 +00:00
str ( int ( row [ ' amount ' ] ) ) )
if row [ ' trim ' ] == ' Yes ' :
f . write ( " , Trim-Material: " + row [ ' trimmat ' ] + " , Trim-Pattern: " + row [ ' trimtype ' ] )
if row [ ' name ' ] == ' ' :
f . write ( " " )
else :
f . write ( " , Name: " + str ( rarity [ row [ ' rarity ' ] ] ) + row [ ' name ' ] . replace ( " ' " , " ' ' " ) + " , Lore: " )
if row [ ' name ' ] == ' ' :
f . write ( " " )
else :
if " , " in row [ ' lore ' ] :
f . write ( " MANUAL LORE PLEASE " )
else :
f . write ( str ( rarity_sub [ row [ ' rarity ' ] ] ) +
row [ ' lore ' ] . replace ( " ' " , " ' ' " ) )
idx = pd . IndexSlice
2024-07-05 16:14:27 +00:00
enchants = row [ old_names ]
2024-07-05 15:19:50 +00:00
enchants . replace ( ' ' , np . nan , inplace = True )
2024-07-05 16:14:27 +00:00
enchants = enchants . apply ( pd . to_numeric , errors = ' ignore ' , downcast = ' integer ' )
2024-07-05 15:19:50 +00:00
enchants . dropna ( how = ' all ' , inplace = True )
2024-07-05 16:14:27 +00:00
enchants = enchants . rename ( index = enchant_map )
2024-07-05 15:19:50 +00:00
for label , content in enchants . iteritems ( ) :
f . write ( " , " + label + " : " + str ( int ( content ) ) )
f . write (
" ' \n BlackListed-Permissions: {} \n Alternative-Prize: \n Toggle: false \n Messages: {} \n Commands: {} \n Items: {} \n " )
# Write Header (Quest Crate)
with open ( ' tqvc.yml ' , ' w ' ) as f :
2024-07-05 16:14:27 +00:00
f . write (
" Crate: \n CrateType: CSGO \n CrateName: ' <yellow><b>Quest Crate ' \n Preview-Name: ' <yellow><b>Quest Crate Preview ' \n StartingKeys: 0 \n InGUI: false \n Slot: 13 \n OpeningBroadCast: False \n BroadCast: ' <yellow>* % Player % <yellow>is opening a <gold>Quest Crate<yellow>! (/vote) ' \n Item: ' CHEST ' \n Glowing: false \n Name: ' <yellow>Quest Crate ' \n DisplayLore: \n - ' <gray>This crate contains strange objects. ' \n - ' <gray>You have <gold> % Keys % keys <gray>to open this crate with. ' \n - ' <gray><b>(<yellow><b>!<gray><b>) Right click to view rewards. ' \n " )
f . write (
" PhysicalKey: \n Name: ' <red>Quest Crate Key ' \n Lore: \n - ' <gray>Complete a daily quest from Scruff! ' \n - ' <gray>Unlock this crate at spawn. ' \n Item: ' tripwire_hook ' \n Glowing: True \n Prizes: \n " )
2024-07-05 15:19:50 +00:00
# Prizes
for index , row in quest . iterrows ( ) :
f . write ( " " + str ( index + 1 ) + " : \n " )
if row [ ' name ' ] == ' ' :
f . write ( " DisplayName: ' ' \n " )
else :
f . write ( " DisplayName: ' " +
str ( rarity [ row [ ' rarity ' ] ] ) + row [ ' name ' ] . replace ( " ' " , " ' ' " ) + " ' \n " )
2024-07-05 16:14:27 +00:00
f . write ( " DisplayItem: ' " + row [ ' itemtype ' ] . lower ( ) + " ' \n " )
2024-07-05 15:19:50 +00:00
if row [ ' trim ' ] == ' Yes ' :
f . write ( " DisplayTrim: \n Material: ' " + row [ ' trimmat ' ] + " ' \n Pattern: ' " + row [ ' trimtype ' ] + " ' \n " )
if row [ ' name ' ] == ' ' :
f . write ( " DisplayAmount: " +
2024-07-05 16:14:27 +00:00
str ( int ( row [ ' amount ' ] ) ) + " \n DisplayLore: \n - ' " + str ( rarity_sub [ row [ ' rarity ' ] ] ) + " Win some " + row [ ' itemtype ' ] . replace ( " _ " , " " ) . title ( ) . lower ( ) + " ' \n " )
2024-07-05 15:19:50 +00:00
else :
f . write ( " DisplayAmount: " +
2024-07-05 16:14:27 +00:00
str ( int ( row [ ' amount ' ] ) ) + " \n DisplayLore: \n - ' " + str ( rarity_sub [ row [ ' rarity ' ] ] ) + " Win the " + row [ ' name ' ] . replace ( " ' " , " ' ' " ) + " ' \n " )
2024-07-05 15:19:50 +00:00
2024-07-05 16:14:27 +00:00
f . write ( " MaxRange: 75 \n Chance: 1 \n Firework: false \n Glowing: false \n Player: ' ' \n Unbreakable: false \n Items: \n - ' Item: " + row [ ' itemtype ' ] . lower ( ) + " , Amount: " +
2024-07-05 15:19:50 +00:00
str ( int ( row [ ' amount ' ] ) ) )
if row [ ' trim ' ] == ' Yes ' :
f . write ( " , Trim-Material: " + row [ ' trimmat ' ] + " , Trim-Pattern: " + row [ ' trimtype ' ] )
if row [ ' name ' ] == ' ' :
f . write ( " " )
else :
f . write ( " , Name: " + str ( rarity [ row [ ' rarity ' ] ] ) + row [ ' name ' ] . replace ( " ' " , " ' ' " ) + " , Lore: " )
if row [ ' name ' ] == ' ' :
f . write ( " " )
else :
if " , " in row [ ' lore ' ] :
f . write ( " MANUAL LORE PLEASE " )
else :
f . write ( str ( rarity_sub [ row [ ' rarity ' ] ] ) +
row [ ' lore ' ] . replace ( " ' " , " ' ' " ) )
idx = pd . IndexSlice
2024-07-05 16:14:27 +00:00
enchants = row [ old_names ]
2024-07-05 15:19:50 +00:00
enchants . replace ( ' ' , np . nan , inplace = True )
2024-07-05 16:14:27 +00:00
enchants = enchants . apply ( pd . to_numeric , errors = ' ignore ' , downcast = ' integer ' )
2024-07-05 15:19:50 +00:00
enchants . dropna ( how = ' all ' , inplace = True )
2024-07-05 16:14:27 +00:00
enchants = enchants . rename ( index = enchant_map )
for label , content in enchants . items ( ) :
2024-07-05 15:19:50 +00:00
f . write ( " , " + label + " : " + str ( int ( content ) ) )
f . write (
" ' \n BlackListed-Permissions: {} \n Alternative-Prize: \n Toggle: false \n Messages: {} \n Commands: {} \n Items: {} \n " )