Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- Malay has halbs, but I think giving Malay Rams and Treadmill crane would make it enjoyable for others as you have no real rush option and they are slow to build up a good army and slow to push relying on Bbc/Treb push... thus siege rams making it atleast more aggressive and Treadmill crane making it so u don't have to always play from behind defending to get to your ideal Malay composition.
- A civ like Byz would benefit from Treadmill crane alone and maybe blood lines (although bloodlines would impact Byz RM I think alot)
- But Treadmill crane is a good start.
- Ethopian could use Treadmill crane as it has no legitamate mobility option and is hard to defend when rushed as they have weak cavalry and weak infantry line where they shine mostly with archer and SO.. if ur a player who lacks micro or early game, this civ probably sucks to play as they really lack mobility and early game+late game hugely imo.
- Italian is an okay civ I'd may not need anything, but in my opinion not quite there yet in strength (yes they got great UU) but honestly mobility not being great outside of condo early in which they typically lose to cavalry anyway, and the fact that they defend poorly and rely on castle unit/bbc in which case I see most players castle clump with Italian due to only having condo/pikemen to defend which could be disasterous anyway. Maybe an Halb upgrade would help with resorting to turtling for UU majority of time of getting rushed in tg. All in all I just think their early game and defense is a liability and their late game is not great either, although we can all probably agree their mid game can be super strong but that's situationally. Bestly put, italians is a situational civ rn imo. Can be great to play at times, or can totally just suck and be useless.
- Porto is tough to say as they got a scary deathball at times and i rate them decent at defending as u can go champ or halb. Also can rush with Cavalier (if your feeling good).. but I feel like their missing something. Once deathball is done they seem super weak and expensive on wood and gold (yea they get a gold bonus, but when ur main gold unit is a BBC combined with like UU or something else, u can drain gold quite fast). Also really immobile as ur camping with bbc. Maybe squires on their infantry can give them a little push? Or maybe even giving them Siege Ram as an alternative so ur not always having to death ball/slow push to win.
- Brits just need Treadmill crane, they have no rushing options mostly a sling civ or support civ. Typically easily countered by majority of civs like elephant civs, Rams, siege civs, or paladins, eagles and alot of UUs. Lol. Plus super immobile. But overall great supporting civ and sling civ. But just too situational. My only solution I have is give them Treadmill crane, if they can manage early on or get a jump they can be a force. I've played too many games where I could only sling/support or just camp with brits.
- Goths is tricky...I think Treadmill crane would make them too strong. This is a civ that I like but can see where they can suck to play in most TGs. Maybe Siege Ram or the Last armor for infantry is needed at this point, their mid game is suspect and early/late game can be hit or miss...
- And lastly to Zacks point, give Khmer Bombard cannon back and take away Treadmill crane because with both Khmer might be too Op like it used to be.. I think is the better solution, as u should be able to defend okay with the fact u can garrison villagers via house and they have great econ.
- I think I covered most the civs that need something done the most in terms of TG
- */
- /*
- suno hydra dm balance ideas
- XS script by xThomas
- Created: Dec 16, 2021
- Modified: Dec 16, 2021
- Version: 1.0
- use this line to include it in a random map script
- #includeXS myscript.xs
- */
- void plateMailArmor(int player = 1) {
- int spear = 93;
- int militia = 74;
- int huskarl_c = 41;
- int huskarl_b = 759;
- int spear_melee_armor = 1024 + 3;
- int militia_melee_armor = 1024 + 4;
- int huskarl_melee_armor = 1024 + 3;
- xsEffectAmount(cSetAttribute, spear, cArmor, spear_melee_armor, player);
- xsEffectAmount(cSetAttribute, militia, cArmor, militia_melee_armor, player);
- xsEffectAmount(cSetAttribute, huskarl_c, cArmor, huskarl_melee_armor, player);
- xsEffectAmount(cSetAttribute, huskarl_b, cArmor, huskarl_melee_armor, player);
- int spear_piercearmor = 768 + 4;
- int militia_piercearmor = 768 + 5;
- int huskarl_piercearmor = 768 + 12;
- xsEffectAmount(cSetAttribute, spear, cArmor, spear_piercearmor, player);
- xsEffectAmount(cSetAttribute, militia, cArmor, militia_piercearmor, player);
- xsEffectAmount(cSetAttribute, huskarl_c, cArmor, huskarl_piercearmor, player);
- xsEffectAmount(cSetAttribute, huskarl_b, cArmor, huskarl_piercearmor, player);
- }
- void upgradeSiegeRam(int player = 1) {
- xsChatData("TEST: Enable Siege Ram for player %d", player);
- // fakebram = 35;
- int realbram = 1258;
- int siegeram = 548;
- xsEffectAmount(cUpgradeUnit, realbram, siegeram, 0, player);
- return;
- }
- void upgradeHalberdier(int player = 1) {
- xsChatData("TEST: Enable HALB for player %d", player);
- int spear = 93;
- int halb = 359;
- xsEffectAmount(cUpgradeUnit, spear, halb, 0, player);
- return;
- }
- void researchTreadmillCrane(int player = 1) {
- xsChatData("Enable TreadmillCrane for player %d", player);
- xsEffectAmount(cMulAttribute, 118, 13, 1.2, player);
- xsEffectAmount(cMulAttribute, 212, 13, 1.2, player);
- return;
- }
- void oldTarkan() {
- int tarkan = 755;
- xsChatData("Old Tarkan");
- xsEffectAmount(cSetAttribute, tarkan, cArmor, 775);
- xsEffectAmount(cSetAttribute, tarkan, cShownPierceArmor, 3);
- xsEffectAmount(cEnableObject, 886, cAttributeDisable, 0);
- xsEffectAmount(cEnableObject, 887, cAttributeDisable, 0);
- }
- void oldCavArcherCost() {
- int cavarcher = 39;
- xsEffectAmount(cSetAttribute, cavarcher, cWoodCost, 28);
- xsEffectAmount(cSetAttribute, cavarcher, cGoldCost, 49);
- }
- void researchBombardCannon(int player = 1) {
- xsChatData("Enable Bombard Cannon for player %d", player);
- xsEffectAmount(cEnableObject, 36, cAttributeEnable, 0, player);
- return;
- }
- /* ===================== */
- // for post imp starts you need to set the base unit
- // a post imp unit spawned from castle wont get the change
- // although one spawned by create_object will
- // create_object behaves different is a gotcha when ur testing map
- /* ===================== */
- // kipchaks have 1.8 fire rate (from 2.2) and have 0 attack delay like they used to
- void buffKipchak() {
- xsChatData("Kipchaks have 0 delay, base ROF 1.8 (was 2.2)");
- int kipchak = 1231;
- float oldBaseROF = 1.8; // currently 2.2
- float x = 1.8 / 2.2;
- float desiredROF = 1.8*0.85; // thumb ring
- xsEffectAmount(cSetAttribute, kipchak, cAttackDelay, 0);
- xsEffectAmount(cMulAttribute, kipchak, cAttackReloadTime, x);
- int e_kipchak = 1233;
- xsEffectAmount(cSetAttribute, e_kipchak, cAttackDelay, 0);
- xsEffectAmount(cMulAttribute, e_kipchak, cAttackReloadTime, x);
- int freekipchak = 1260;
- xsEffectAmount(cSetAttribute, freekipchak, cAttackDelay, 0);
- xsEffectAmount(cMulAttribute, freekipchak, cAttackReloadTime, x);
- }
- // mangudai have 0 attack delay and move at a speed of 1.43 like they used to
- void buffMangudai() {
- int mangudai = 11;
- float desiredSpeed = 1.43*1.1; // husbandry
- xsEffectAmount(cSetAttribute, mangudai, cAttackDelay, 0);
- xsEffectAmount(cSetAttribute, mangudai, cMovementSpeed, desiredSpeed);
- xsChatData("Mangudai have 0 delay, CHECK SPEED 1.43 IF HUSBANDRY APPLIED");
- }
- // mameluke take less damage from halbs and have 0 attack delay
- void buffMamelukeAttackDelay() {
- int mameluke = 282;
- xsEffectAmount(cSetAttribute, mameluke, cAttackDelay, 0);
- }
- void saracenCamelryAOC() {
- // EXPERIMENTAL
- int mameluke = 282;
- xsChatData("Mamelukes have armor vs halb as in AOC DM.");
- // mameluke armor class is 35, halberdier does 11 to mameluke armor
- int desiredMamelukeArmor = (35*256) + 11;
- xsEffectAmount(cSetAttribute, mameluke, cArmor, desiredMamelukeArmor);
- // camel armor is class 30, halb does 26 vs camel armor
- int desiredCamelArmor = (30*256) + 10;
- xsEffectAmount(cSetAttribute, mameluke, cArmor, desiredCamelArmor);
- // does this change how pikes do vs mamelukes at all?
- // adding extra camel armor messed with how camels perform vs mames so i need to fix that
- }
- void camelryFIXMEcamels(){
- // UNTESTED : Mameluke damage from Cuman Camels, Tatar Flaming Camels
- // Working : Mamelukes take 23 Damage from Heavy Camels, 25 Damage from Imperial Camel
- int p = 0;
- int max = xsGetNumPlayers();
- while(p < max) {
- p++;
- int c = xsGetPlayerCivilization(p);
- switch(c) {
- default : {
- // WORKS FOR IMPERIAL AND HEAVY CAMELS
- xsChatData("difault camels");
- xsEffectAmount(cSetAttribute, 329, cAttack, 8987); // SHOULD apply to camels created from stables
- }
- case 33 : {
- xsEffectAmount(cSetAttribute, 329, cAttack, 8987); // SHOULD apply to camels created from stables
- // TATARS FLAMING CAMELS I HAVE NO IDEA HOW TO FIX NOW MAMES DONT DIE TO THEM AT ALL
- int flamingcamel = 1263;
- }
- case 34 : {
- // CUMAN CAMELS ONLY HAVE 5 BONUS VS CAMELS SO THEY CAN'T GET EXTRA ATTACK VS MAMELUKES FUUUUUU
- xsChatData("cumans camels");
- xsEffectAmount(cSetAttribute, 329, cAttack, 8976); // Camel does 16 less damage to mameluke compared to heavy camel
- }
- }
- }
- }
- // mamelukes are classified as ships again lmao
- /* void nerfMamelukeS(int player = 1) {
- // i would need to mess with mameluke armors and halberdier bonuses vs ships and camels and mamelukes and its a massive pain so i dropped the nerf idea and also i dont think its possible to add armor/attack classes, at least it wasnt with up
- } */
- // see below: camels are ships
- // rms can't change armor classes, but towers/castles already do +1 vs camels
- void camelsAreSortaShips(int player = 1) {
- int camelArmorClass = 30;
- int watchtower = 79;
- int desiredCamelAttackBonus = 9;
- int camelAttack = (camelArmorClass * 256) + desiredCamelAttackBonus;
- xsEffectAmount(cSetAttribute, watchtower, cAttack, camelAttack);
- xsChatData("Camels take bonus damage from towers again lmao");
- // TODO: mimic heated shot
- }
- // 15% faster instead of 10%
- void buffKhmerBattleElephant(int player = 1) {
- float mult = 1.15/1.1;
- int battleElephant = 1132;
- // int battleElephantElite = 1134;
- xsEffectAmount(cMulAttribute, battleElephant, cMovementSpeed, mult, player);
- }
- // +1 Range... team bonus?
- void buffKoreansOnager(int player = 1) {
- // may need to use a rule to handle team bonuses
- }
- void thumbRing(int player = 1) {
- int archerClass = 0;
- int cavArcherClass = 36;
- int archer = 4;
- // int crossbowman = 24;
- // int arbalest = 492;
- int cavarcher = 39;
- int heavycavalryarcher = 474;
- // WORKING: Archer thumb ring
- // WARNING: cav archer not tested
- xsEffectAmount(cSetAttribute, archerClass, cAccuracyPercent, 100, player);
- xsEffectAmount(cSetAttribute, cavArcherClass, cAccuracyPercent, 100, player);
- xsEffectAmount(cMulAttribute, archer, cAttackReloadTime, 0.85, player);
- xsEffectAmount(cMulAttribute, cavarcher, cAttackReloadTime, 0.9, player);
- }
- void buffMayansObsidianArrows(int player = 1) {
- }
- // make their attack do +6 damage vs buildings
- // on top of the +5 vs archers?
- void buffArambai(int player = 1) {
- }
- // blast furnace?
- // leitis and winged hussar compensate enough imo, its just a nerf to pally
- void buffLithuanians(int player = 1) {
- }
- void main() {
- // camelsAreSortaShips();
- buffKipchak();
- buffMamelukeAttackDelay();
- // saracenCamelryAOC();
- // camelryFIXMEcamels();
- buffMangudai();
- oldTarkan();
- oldCavArcherCost();
- int p = 0;
- int max = xsGetNumPlayers();
- while(p < max) {
- p++;
- int c = xsGetPlayerCivilization(p);
- switch(c) {
- case cBritons : {
- xsChatData("Player %d is Brits", p);
- researchTreadmillCrane(p);
- }
- case cFranks : {
- xsChatData("Player %d is Franks", p);
- researchTreadmillCrane(p);
- }
- case cGoths : {
- xsChatData("Player %d is Goths", p);
- // researchTreadmillCrane(p);
- plateMailArmor(p);
- upgradeSiegeRam(p);
- }
- case cTeutons : {
- }
- case cJapanese : {
- }
- case cChinese : {
- }
- case cByzantines : {
- xsChatData("Player %d is Byz", p);
- researchTreadmillCrane(p);
- }
- case cPersians : {
- }
- case cSaracens : {
- xsChatData("Player %d is Saracens", p);
- // buffMameluke(p); // moved outside
- // nerfMamelukeShips(p) // outside
- }
- case cTurks : {
- }
- case cVikings : {
- xsChatData("Player %d is Vikings", p);
- thumbRing(p);
- }
- case cMongols : {
- xsChatData("Player %d is Mongols", p);
- // buffMangudai(p);
- }
- case cCelts : {
- }
- case cSpanish : {
- }
- case cAztecs : {
- }
- case cMayans : {
- xsChatData("Player %d is Mayans", p);
- buffMayansObsidianArrows(p);
- }
- case cHuns : {
- xsChatData("Player %d is Huns", p);
- researchTreadmillCrane(p);
- }
- case cKoreans : {
- xsChatData("Player %d is Koreans", p);
- buffKoreansOnager(p);
- }
- case cItalians : {
- upgradeHalberdier(p);
- }
- case cIndians : {
- }
- case cIncas : {
- }
- case cMagyars : {
- }
- case cSlavs : {
- xsChatData("Player %d is Slavs", p);
- researchTreadmillCrane(p);
- }
- case cPortuguese : {
- }
- case cEthiopians : {
- researchTreadmillCrane(p);
- }
- case cMalians : {
- }
- case cBerbers : {
- }
- case cKhmer : {
- xsChatData("Player %d is Khmer", p);
- researchTreadmillCrane(p);
- buffKhmerBattleElephant(p);
- researchBombardCannon(p);
- }
- case cMalay : {
- xsChatData("Player %d is Malay", p);
- researchTreadmillCrane(p);
- upgradeSiegeRam(p);
- }
- case cBurmese : {
- xsChatData("Player %d is Burmese", p);
- researchTreadmillCrane(p);
- buffArambai(p);
- }
- case cVietnamese : {
- }
- case cBulgarians : {
- }
- case cTatars : {
- }
- case cCumans : {
- xsChatData("Player %d is Cumans", p);
- // researchTreadmillCrane(p);
- // buffKipchak();
- }
- case cLithuanians : {
- }
- case cBurgundians : {
- }
- case cSicilians : {
- }
- case cPoles : {
- }
- case cBohemians : {
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement