Announcement

Collapse
No announcement yet.

New Mod

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • New Mod

    <b>Prisoners of War/Traitors Mod</b>

    <b>Readme:</b>
    One thing I missed in CTP and CTP2 from Civ2 was the diplomat/spy ability to bribe enemy units to join your army. To simulate this effect exactly would be very difficult to do, but I have been able to write some code that enables the player to capture enemy units in battle, and force them to fight for you.

    To capture units in battle, stack a slaver with your army, which will enable the capture code to work.
    The capturing takes place right at the end of the battle, because during testing I had found a way to attack and retreat with loads of different units, suffer few casualties, and double my army size... (This no longer works). Due to the difficulties in collecting equipment and materials, once you have captured the enemy soldiers, you are given a choice of how they should be incoporated into your army. All the choices are basically infantry units.


    Age 1:
    -Warrior
    -Hoplite
    -Archer

    Age 2:
    -Pikeman
    -Samurai
    -Archer

    Age 3:
    -Pikeman
    -Infantryman
    -MachineGunner

    Age 4:
    -Machine Gunner
    -Paratrooper
    -Marine

    Age 5:
    -Hover Infantry
    -Marine
    -Paratrooper

    __________________________________

    It always annoyed me, not having that "bribe" feature, but this is the best I can (or would be prepared to) do to bring it back.
    Hope you all like it, it will be on the Way of the Wombat soon, but I'll attatch it here, because its basically only a slic file.
    Attached Files
    Concrete, Abstract, or Squoingy?
    "I don't believe in giving scripting languages because the only additional power they give users is the power to create bugs." - Mike Breitkreutz, Firaxis

  • #2
    Ben,

    Does this code work both ways??? - will the AI be able to also use this code to capture units???

    ...if so, I will be putting it in Cradle then.

    after I test it.

    hey, your avatar isn't stabbing anymore!!!
    Yes, let's be optimistic until we have reason to be otherwise...No, let's be pessimistic until we are forced to do otherwise...Maybe, let's be balanced until we are convinced to do otherwise. -- DrSpike, Skanky Burns, Shogun Gunner
    ...aisdhieort...dticcok...

    Comment


    • #3
      That's pretty cool, but the AI does not seem to use slavers in an army stack. Seems like another unfair advantage to the human player. Also aren't slavers eventually phased out with the Emancipation Wonder? Any way to have it happen with any unit? Still pretty cool. Let me just say that the modders on CTP II come up with some of the neatest things. CTP II seems to be able to do a lot of things (with a lot of work).

      Comment


      • #4
        The AI will also be able to capture units. Whether or not they could figure the buttons out is another matter, but if they can't, then some simple code will sort that, and the AI will get a certain unit per age, or a randomly chosen one.

        Also aren't slavers eventually phased out with the Emancipation Wonder?
        Oops, forgot about that... But yes, it is possible to easily change the enabling unit to anything you want. "Battlemaster" or something. Details of the SLIC line to change are included in the readme.

        No, my avatar isn't stabbing anymore I found the quality was poor (not that this one is much better) and it just seemed too assertive, and soooo cheesy. Maybe I will make an even better one someday. (When this is finished, Mars is done, my LOTR mentoring finished...)

        Glad you like it. I thought you might want to use it Dave

        Ben
        Concrete, Abstract, or Squoingy?
        "I don't believe in giving scripting languages because the only additional power they give users is the power to create bugs." - Mike Breitkreutz, Firaxis

        Comment


        • #5
          Ben,

          What I would like to do is tie this coding into all of my wonder units (and possibly a couple others) instead of the slaver unit. Is it possible to code for multiple units?

          I also would like to limit the coding to the weakest unit available in each age - i.e warrior/hoplite for the ancient, man-at-arms/infantryman for the medieval and machine gunner for modern/future. I think I can handle that part of the coding though.
          Yes, let's be optimistic until we have reason to be otherwise...No, let's be pessimistic until we are forced to do otherwise...Maybe, let's be balanced until we are convinced to do otherwise. -- DrSpike, Skanky Burns, Shogun Gunner
          ...aisdhieort...dticcok...

          Comment


          • #6
            Yeah, that would be good.

            Probably this will work, though this code gave me a few problems due to built-in SLIC bugs
            Code:
            HandleEvent(VictoryMoveOrder) 'capture' pre {
            	tmpArmy = army[0];
            	tmpNum = tmpArmy.size;
            	tmpPlayer = army[0].owner;
            	for(i = 0; i < tmpNum; i = i + 1) {
            		GetUnitFromArmy(tmpArmy, i, tmpUnit);
            		tmpNum2 = tmpUnit.type;
            		if(tmpNum2 == 56 || tmpNum2 == 99){				
            // number of unit. this example is slaver - || = "or", add as many as you need, with the correct numbers.
            			age = WOUTER_GetAge(tmpPlayer);
            			if(age == 5){
            				message (tmpPlayer, 'five');
            			}
            			elseif(age == 4){
            				message(tmpPlayer, 'four');
            			}
            			elseif(age == 3){
            				message(tmpPlayer, 'three');
            			}
            			elseif(age == 2){
            				message(tmpPlayer, 'two');
            			}
            			elseif(age == 1){
            				message(tmpPlayer, 'one');
            			}
            			
            		}
            	}
            }
            If you were limiting it to one unit per age, then you can dispense with the messageboxes completely, as just put the CreateUnit event into the above code, instead (or as well as) the message. Also the buttons would not be needed. Just email me if it starts causing problems.

            Ben
            Concrete, Abstract, or Squoingy?
            "I don't believe in giving scripting languages because the only additional power they give users is the power to create bugs." - Mike Breitkreutz, Firaxis

            Comment


            • #7
              When you mentioned SLIC problems, what were they?

              I'm a bit confused as to how I can implement this coding - I glanced at it yesterday and noticed the section that referrred to the slaver.

              if(tmpNum2 == 56 || tmpNum2 == 99){

              I'm assuming that the above line is the one that I need to be concerned with. I'm assuming that I also need to cut and paste the entry

              tmpNum2 == 56 ||

              using it for each unit that I want to have the ability and then replacing the numbers with the numbers in units.txt that correspond to each unit.

              I'm also looking at getting the following progression too. In looking at the coding again, I'm also a bit confused as to how I will code in the following info, as my setup is different from the default game. This is how I would like to see it happen

              Captured unit becomes Spearman
              Enable Advance is Toolmaking,
              Obsolete Advance is Bronze Working

              Captured unit becomes Hoplite
              Enable Advance is Bronze Working,
              Obsolete Advance is Dark Ages

              Captured unit becomes Man at Arms
              Enable Advance is Dark Ages,
              Obsolete Advance is Flintlock

              Captured unit becomes Infantryman
              Enable Advance is Flintlock,
              Obsolete Advance is Advanced Infantry Tactics

              Captured unit becomes Machine Gunner
              Enable Advance is Advanced Infantry Tactics,
              Obsolete Advance is Chaos Theory
              Yes, let's be optimistic until we have reason to be otherwise...No, let's be pessimistic until we are forced to do otherwise...Maybe, let's be balanced until we are convinced to do otherwise. -- DrSpike, Skanky Burns, Shogun Gunner
              ...aisdhieort...dticcok...

              Comment


              • #8
                The problems were difficulties getting it to work. They are solved (I hope) or I wouldn't have released it.
                I'm a bit confused as to how I can implement this coding - I glanced at it yesterday and noticed the section that referrred to the slaver.

                if(tmpNum2 == 56 || tmpNum2 == 99){

                I'm assuming that the above line is the one that I need to be concerned with. I'm assuming that I also need to cut and paste the entry

                tmpNum2 == 56 ||

                using it for each unit that I want to have the ability and then replacing the numbers with the numbers in units.txt that correspond to each unit.
                That is correct, but the last unit in that line does not need the || after it, as the double line means "or", so the last tmpNum2 = xx does not need it.

                Because you are only doing it with one unit being captured, you can leave out the buttons, and just have the alertboxes to make you aware that it has happened.

                So...
                If you look at the WOUTER_GetAge function that I took from the militia code, you can remove the "&& HasAdvance(tmpPlayer, ID_ADVANCE_XXX) bit from each line, then replace the first advance on each line with the advance you want there.

                Because you want the code to obsolete at Chaos Theory, it will need an extra line or two.
                You've done it in reverse really, I had it start late, and not finish, you have it set to start at the beginning and finish early.
                Concrete, Abstract, or Squoingy?
                "I don't believe in giving scripting languages because the only additional power they give users is the power to create bugs." - Mike Breitkreutz, Firaxis

                Comment


                • #9
                  Here is the code to make it work, note that you will probablt want to change the messages in scen_str.txt, because they were set up for a choice of captured units.
                  Attached Files
                  Concrete, Abstract, or Squoingy?
                  "I don't believe in giving scripting languages because the only additional power they give users is the power to create bugs." - Mike Breitkreutz, Firaxis

                  Comment


                  • #10
                    Thanks Ben,

                    I got a really good game going now and I am hoping that plugging this coding into the current game will not effect it.

                    Do all I need to do is make my SLIC alterations and then reload SLIC via the cheat mode?
                    Yes, let's be optimistic until we have reason to be otherwise...No, let's be pessimistic until we are forced to do otherwise...Maybe, let's be balanced until we are convinced to do otherwise. -- DrSpike, Skanky Burns, Shogun Gunner
                    ...aisdhieort...dticcok...

                    Comment


                    • #11
                      If you use the chat mode to reload the SLIC , (press ' , then /reloadslic ) then you can keep your score.
                      I think that should be fine.
                      Concrete, Abstract, or Squoingy?
                      "I don't believe in giving scripting languages because the only additional power they give users is the power to create bugs." - Mike Breitkreutz, Firaxis

                      Comment

                      Working...
                      X