##@@Generate Affinity
##@@False
##This script is based on Vawser's work in Yapped Rune Bear.
##Some values and adjustments may not be as expected as this script expects a regularly upgrading, physical weapon.
##This script only handles 1 row at a time (baseID).
newvar baseID:1000000;
newvar normalBaseRate:0.95;
newvar primaryScaleRate:0.95;
newvar highScaleRate:0.75;
newvar lowScaleRate:0.25;
##start work
##add rows
param EquipParamWeapon: id $baseID: copyN 12;
clipboard: ID: + rowIndex;
clipboard: ID: scale 100:$baseID;
clipboard: ID: + 100;
clipboard: reinforceTypeId: = rowIndex;
clipboard: reinforceTypeId: * 100;
clipboard: reinforceTypeId: + 100;
clipboard: paste;
##calculate IDs of new rows
newvar heavyID:$baseID;
vars heavyID: + 100;
newvar keenID:$baseID;
vars keenID: + 200;
newvar qualityID:$baseID;
vars qualityID: + 300;
newvar fireID:$baseID;
vars fireID: + 400;
newvar flameArtID:$baseID;
vars flameArtID: + 500;
newvar lightningID:$baseID;
vars lightningID: + 600;
newvar sacredID:$baseID;
vars sacredID: + 700;
newvar magicID:$baseID;
vars magicID: + 800;
newvar coldID:$baseID;
vars coldID: + 900;
newvar poisonID:$baseID;
vars poisonID: + 1000;
newvar bloodID:$baseID;
vars bloodID: + 1100;
newvar occultID:$baseID;
vars occultID: + 1200;
##calculate highest scaling
newvar maxScale:0.0;
vars maxScale: max paramlookup EquipParamWeapon $baseID correctStrength;
vars maxScale: max paramlookup EquipParamWeapon $baseID correctAgility;
vars maxScale: max paramlookup EquipParamWeapon $baseID correctMagic;
vars maxScale: max paramlookup EquipParamWeapon $baseID correctFaith;
vars maxScale: max paramlookup EquipParamWeapon $baseID correctLuck;
##collect basic data
newvar name:UnkName;
vars name: = paramlookup EquipParamWeapon $baseID Name;
##heavy
param EquipParamWeapon: id $heavyID: Name: = Heavy;
param EquipParamWeapon: id $heavyID: sortId: + 1;
param EquipParamWeapon: id $heavyID: correctStrength: = $maxScale;
param EquipParamWeapon: id $heavyID: correctStrength: * 1.2;
param EquipParamWeapon: id $heavyID: correctAgility: = 0;
param EquipParamWeapon: id $heavyID: attackBasePhysics: * $normalBaseRate;
param EquipParamWeapon: id $heavyID: correctType_Physics: = 1;
##keen
param EquipParamWeapon: id $keenID: Name: = Keen;
param EquipParamWeapon: id $keenID: sortId: + 2;
param EquipParamWeapon: id $keenID: correct(Strength|Agility): = $maxScale;
param EquipParamWeapon: id $keenID: correctStrength: * 0.5;
param EquipParamWeapon: id $keenID: correctAgility: * 1.2;
param EquipParamWeapon: id $keenID: attackBasePhysics: * $normalBaseRate;
param EquipParamWeapon: id $keenID: correctType_Physics: = 2;
##quality
param EquipParamWeapon: id $qualityID: Name: = Quality;
param EquipParamWeapon: id $qualityID: sortId: + 3;
param EquipParamWeapon: id $qualityID: correct(Strength|Agility): = $maxScale;
param EquipParamWeapon: id $qualityID: correct(Strength|Agility): * 1.3;
param EquipParamWeapon: id $qualityID: attackBasePhysics: * $normalBaseRate;
param EquipParamWeapon: id $qualityID: correctType_Physics: = 8;
##fire
param EquipParamWeapon: id $fireID: Name: = Fire;
param EquipParamWeapon: id $fireID: sortId: + 5;
param EquipParamWeapon: id $fireID: correct(Strength|Agility): = $maxScale;
param EquipParamWeapon: id $fireID: correctStrength: * $highScaleRate;
param EquipParamWeapon: id $fireID: correctAgility: * $lowScaleRate;
param EquipParamWeapon: id $fireID: correct(Magic|Faith): = 0;
param EquipParamWeapon: id $fireID: attackBaseFire: = field attackBasePhysics;
param EquipParamWeapon: id $fireID: attackBase(Physics|Fire): * $normalBaseRate;
param EquipParamWeapon: id $fireID: attackBase(Magic|Thunder): = 0;
param EquipParamWeapon: id $fireID: spAttribute: = 11;
param EquipParamWeapon: id $fireID: correctType_Fire: = 4;
param EquipParamWeapon: id $fireID: attackElementCorrectParam: = 10005;
##flameart
param EquipParamWeapon: id $flameArtID: Name: = Flame Art;
param EquipParamWeapon: id $flameArtID: sortId: + 6;
param EquipParamWeapon: id $flameArtID: correct(Strength|Agility|Faith): = $maxScale;
param EquipParamWeapon: id $flameArtID: correct(Strength|Agility): * $lowScaleRate;
param EquipParamWeapon: id $flameArtID: correctFaith: * $primaryScaleRate;
param EquipParamWeapon: id $flameArtID: correctMagic: = 0;
param EquipParamWeapon: id $flameArtID: attackBaseFire: = field attackBasePhysics;
param EquipParamWeapon: id $flameArtID: attackBase(Physics|Fire): * $normalBaseRate;
param EquipParamWeapon: id $flameArtID: attackBase(Magic|Thunder): = 0;
param EquipParamWeapon: id $flameArtID: spAttribute: = 11;
param EquipParamWeapon: id $flameArtID: correctType_Fire: = 4;
##lightning
param EquipParamWeapon: id $lightningID: Name: = Lightning;
param EquipParamWeapon: id $lightningID: sortId: + 7;
param EquipParamWeapon: id $lightningID: correct(Strength|Agility): = $maxScale;
param EquipParamWeapon: id $lightningID: correctStrength: * $lowScaleRate;
param EquipParamWeapon: id $lightningID: correctAgility: * $highScaleRate;
param EquipParamWeapon: id $lightningID: correct(Magic|Faith): = 0;
param EquipParamWeapon: id $lightningID: attackBaseThunder: = field attackBasePhysics;
param EquipParamWeapon: id $lightningID: attackBase(Physics|Thunder): * $normalBaseRate;
param EquipParamWeapon: id $lightningID: attackBase(Magic|Fire|Thunder): = 0;
param EquipParamWeapon: id $lightningID: spAttribute: = 12;
param EquipParamWeapon: id $lightningID: correctType_Thunder: = 4;
##sacred
param EquipParamWeapon: id $sacredID: Name: = Sacred;
param EquipParamWeapon: id $sacredID: sortId: + 8;
param EquipParamWeapon: id $sacredID: correct(Strength|Agility|Faith): = $maxScale;
param EquipParamWeapon: id $sacredID: correctStrength: * $lowScaleRate;
param EquipParamWeapon: id $sacredID: correctAgility: * $highScaleRate;
param EquipParamWeapon: id $sacredID: correctFaith: * $primaryScaleRate;
param EquipParamWeapon: id $sacredID: correctMagic: = 0;
param EquipParamWeapon: id $sacredID: attackBasePhysics: * $normalBaseRate;
param EquipParamWeapon: id $sacredID: attackBase(Magic|Fire|Thunder): = 0;
param EquipParamWeapon: id $sacredID: attackBaseDark: = field attackBasePhysics;
param EquipParamWeapon: id $sacredID: attackBaseDark: * $normalBaseRate;
param EquipParamWeapon: id $sacredID: spAttribute: = 13;
param EquipParamWeapon: id $sacredID: correctType_Dark: = 4;
##magic
param EquipParamWeapon: id $magicID: Name: = Magic;
param EquipParamWeapon: id $magicID: sortId: + 4;
param EquipParamWeapon: id $magicID: correct(Strength|Agility|Magic): = $maxScale;
param EquipParamWeapon: id $magicID: correct(Strength|Agility): = $lowScaleRate;
param EquipParamWeapon: id $magicID: correctMagic: * $primaryScaleRate;
param EquipParamWeapon: id $magicID: correctFaith: = 0;
param EquipParamWeapon: id $magicID: attackBaseMagic: = field attackBasePhysics;
param EquipParamWeapon: id $magicID: attackBase(Physics|Magic): * $normalBaseRate;
param EquipParamWeapon: id $magicID: attackBase(Fire|Thunder|Dark): = 0;
param EquipParamWeapon: id $magicID: spAttribute: = 10;
param EquipParamWeapon: id $magicID: correctType_Magic: = 4;
##cold
param EquipParamWeapon: id $coldID: Name: = Cold;
param EquipParamWeapon: id $coldID: sortId: + 11;
param EquipParamWeapon: id $coldID: correct(Strength|Agility|Magic): = $maxScale;
param EquipParamWeapon: id $coldID: correct(Strength|Agility|Magic): * $primaryScaleRate;
param EquipParamWeapon: id $coldID: correctFaith: = 0;
param EquipParamWeapon: id $coldID: spEffectBehaviourId1: = 107500;
param EquipParamWeapon: id $coldID: attackBasePhysics: * $normalBaseRate;
param EquipParamWeapon: id $coldID: attackBaseMagic: = field attackBasePhysics;
param EquipParamWeapon: id $coldID: attackBaseMagic: * 0.75;
param EquipParamWeapon: id $coldID: spAttribute: = 10;
param EquipParamWeapon: id $coldID: correctType_Magic: = 4;
param EquipParamWeapon: id $coldID: spEffectMsgId0: = 6601;
##poison
param EquipParamWeapon: id $poisonID: Name: = Poison;
param EquipParamWeapon: id $poisonID: sortId: + 9;
param EquipParamWeapon: id $poisonID: correct(Strength|Agility): = $maxScale;
param EquipParamWeapon: id $poisonID: correct(Strength|Agility): * $primaryScaleRate;
param EquipParamWeapon: id $poisonID: correctLuck: = 30;
param EquipParamWeapon: id $poisonID: spEffectBehaviourId1: = 106000;
param EquipParamWeapon: id $poisonID: attackBasePhysics: * $normalBaseRate;
param EquipParamWeapon: id $poisonID: attackElementCorrectParam: = 10013;
param EquipParamWeapon: id $poisonID: spEffectMsgId0: = 6401;
##blood
param EquipParamWeapon: id $bloodID: Name: = Blood;
param EquipParamWeapon: id $bloodID: sortId: + 10;
param EquipParamWeapon: id $bloodID: correct(Strength|Agility): = $maxScale;
param EquipParamWeapon: id $bloodID: correct(Strength|Agility): * $primaryScaleRate;
param EquipParamWeapon: id $bloodID: correctLuck: = 30;
param EquipParamWeapon: id $bloodID: spEffectBehaviourId1: = 105000;
param EquipParamWeapon: id $bloodID: attackBasePhysics: * $normalBaseRate;
param EquipParamWeapon: id $bloodID: attackElementCorrectParam: = 10013;
param EquipParamWeapon: id $bloodID: spEffectMsgId0: = 6501;
##occult
param EquipParamWeapon: id $occultID: Name: = Occult;
param EquipParamWeapon: id $occultID: sortId: + 12;
param EquipParamWeapon: id $occultID: correct(Strength|Agility|Luck): = $maxScale;
param EquipParamWeapon: id $occultID: correct(Strength|Agility): * 0.4;
param EquipParamWeapon: id $occultID: correctLuck: * 1.2;
param EquipParamWeapon: id $occultID: attackBasePhysics: * $normalBaseRate;
param EquipParamWeapon: id $occultID: correctType_Physics: = 7;
param EquipParamWeapon: id $occultID: attackElementCorrectParam: = 10013;
##finishing touches
newvar allID:textFilter;
vars allID: = $baseID;
vars allID: replacex 0000$:\d\d00;
param EquipParamWeapon: id $allID && !id $baseID: Name: +  ;
param EquipParamWeapon: id $allID && !id $baseID: Name: + $name;