Announcement

Collapse
No announcement yet.

Reply to Ralph (Unit Creation)

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

  • Reply to Ralph (Unit Creation)

    Hmmm, I can't reply in the other thread, so sorry moderators, I'm starting a new thread.

    Units.txt, bit by bit

    <center><table width=80%><tr><td><font color=000080 face="Verdana" size=2><font size="1">quote:
    <img src="/images/blue1.gif" width=100% height=1>
    </font><font size = 1>from units.txt</font>
    ## UNIT 0
    UNIT_ABOLITIONIST { <----- unit internal name
    Description DESCRIPTION_UNIT_ABOLITIONIST <----- not used
    DefaultIcon UNIT_ICON_ABOLITIONIST <--- In uniticon.txt
    IconDefaultSprite SPRITE_ABOLITIONIST <--- In newsprite.txt
    Category UNIT_CATEGORY_SPECIAL <--- category
    Attack 0 <---------- statistics
    Defense 10 <----------
    ZBRangeAttack 0 <---------- used
    Firepower 1 <---------- in
    Armor 1 <----------
    MaxHP 10 <---------- combat
    ShieldCost 540 <---- cost of unit
    PowerPoints 250
    ShieldHunger 5 <---- upkeep cost of unit (per turn)
    FoodHunger 0 <---- upkeep cost of unit in food
    MaxMovePoints 300 <---- how far it can move
    VisionRange 1 <---- how far it can see
    EnableAdvance ADVANCE_CLASSICAL_EDUCATION <--- enabling advance
    ActiveDefenseRange 0 <---- how far it can actively defend
    LossMoveToDmgNone
    MaxFuel 0 <---- Amount of fuel (for aeroplanes)
    * IgnoreZOC <---- This unit can ignore zones of control
    * NoZoc <---- This unit has no zone of control
    * CanBeExpelled <---- This unit can be expelled
    * CantCaptureCity <---- This uniot cannot capture cities
    * NoSlaves <---- Only build if you have no slaves
    * IsSpecialForces <---- Full hitpoints regardless of military status
    * Civilian <---- Isn't a military unit
    s SoundSelect1 SOUND_SELECT1_ABOLITIONIST
    s SoundSelect2 SOUND_SELECT2_ABOLITIONIST
    s SoundMove SOUND_MOVE_ABOLITIONIST
    s SoundAcknowledge SOUND_ACKNOWLEDGE_ABOLITIONIST
    s SoundCantMove SOUND_CANTMOVE_ABOLITIONIST
    s SoundAttack SOUND_ATTACK_ABOLITIONIST
    s SoundWork SOUND_WORK_ABOLITIONIST
    s SoundVictory SOUND_VICTORY_ABOLITIONIST
    s SoundDeath SOUND_DEATH_ABOLITIONIST

    CanSee: Standard <----- can see normal units
    CanSee: Stealth <----- can see stealth units
    MovementType: Land <----- walks on land
    MovementType: Mountain <----- walks on mountains
    Size: Small <----- is small
    VisionClass: Stealth <----- is stealthy

    se SlaveUprising {
    Sound SOUND_ID_SLAVE_UPRISING
    Effect SPECEFFECT_SLAVE_UPRISING
    }

    se UndergroundRailway {
    Chance 0.75
    DeathChance 0.5
    Sound SOUND_ID_UNDERGROUND_RAILWAY
    Effect SPECEFFECT_UNDERGROUND_RAILWAY
    }
    }

    ################################################## ##########

    <img src="/images/blue1.gif" width=100% height=1></font></td></tr></table></center>

    Lines marked * indicate that these flags do not have to be present, and are used by the Abolitionist, and certain others, other units have other special flag, like the paratrooper that can paradrop etc.

    Lines marked - s are sound lines, that are present in all units, and unless you want to make your own sound files, have to end with a unit that the game already uses.

    Lines marked se are special effects that only the abolistionist has. again, other units have their own special effects, eg. the cleric, slaver...


    The combat lines are what really make military units different from each other.

    Attack 10
    Defense 10
    ZBRangeAttack 20
    Firepower 1
    Armor 1
    MaxHP 10

    The attack line is how powerful the unit is. These numbers are from the archer unit. it has a melee atatck of 10. This is fairly standard for the ancient age. As you go through the ages, the attack power gets bigger, as the weopons get more advanced.
    Defence (english spelling, not american ) is how resistant to enemy attacks the unit is. (obviously).
    ZBRangeAttack is how powerful the unit is as a ranged attacker. Archers, gunners, and war walkers are better as ranged attackers because they fire from a distance.
    Firepower is a multiplier that works in the clever combat function so that good units beat worse units.
    Armour is a defence multiplier, so tanks have lots of armour, hoplites have a little (a shield) and slavers (fat men) have none.

    If this explaination was too much, then I apologise, but I hope it helped people understand how to edit stuff, especially if translating from American programming references into a foreign language, then back again is a little difficult.

    If this explaination was too little, please ask more questions, and I'm sure everyone will be happy to help.

    Ben
    <font size=1 face=Arial color=444444>[This message has been edited by Immortal Wombat (edited April 02, 2001).]</font>
    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
    FoodHunger 0 <---- upkeep cost of unit in food

    Were you able to get this line to work within the game? I tried it once to see if it would work, but was unsuccessful. This would be a good line to get to work though.

    And I take it you couldn't figure out the PowerPoints do either.

    This is a good reference for anyone who is adding new units!!!!
    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
      To be honest, I've never actually tried it, except when Nuo was trying the nomad, and tried it with a minus number to give the civ food.

      Powerpoints I don't know, but I just had a look round, and I think it may be something to do with how much production points the unit disbands to when its disbanded in a city. Look in const.txt for POWER_POINTS_TO_MATERIALS 1

      Evidently powerpoints should be roughly 1/2 the unit cost, and by the looks of things, you can edit how much each powerpoint donates.

      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


      • #4
        Hi Ben

        Thanks a lot for your reply with the explanations. Most of it, I assumed allready, as you explained. However I still have a couple of questions:

        1) What dose "LossMoveToDmgNone" mean
        2) What flag do I have to set, in order that a unit can attack in the same turn more than once, if this unit has move-points left

        Thanks a lot and best regards
        Ralph

        Comment


        • #5
          quote:

          Originally posted by RalphTheMouth on 04-05-2001 06:07 AM
          1) What dose "LossMoveToDmgNone" mean



          I dont know. But... I think it may mean the unit doesn't lose movement points when its damaged. In civ2, units lost their movement points when they got damaged. 1/2 their hit points left = 1/2 their movement points.

          quote:


          2) What flag do I have to set, in order that a unit can attack in the same turn more than once, if this unit has move-points left



          That needs SLIC code, its in the Samurai scenario, so it could be cut straight from there.

          Hope that helps
          Ben

          EDIT: I just found the code you want:
          Code:
            //----------------------------------------------------------------
           // Clear Battle Flag so samurai can attack multiple times per turn
          //------------------------------------------------------------------
          
          HandleEvent(BattleAfterMath) 'SSAfterBattle_F' post {   
          	afterBattle = 1;                                
          }
          
          HandleEvent(MoveUnits) 'SSClearBattleFlag_f' pre {
          int_t		i;
          
          	if (afterBattle == 1) {                     
          		afterBattle = 0;                     
          		for(i = 0; i < 7; i = i + 1) {
          			if (sevenSamurai[i].valid) {
          				ClearBattleFlag(sevenSamurai[i]);
          			}
          		}
          	}
          This is designed for the seven samurai, so it will need adapting for your needs. Try:

          Code:
          HandleEvent(BattleAfterMath) 'SSAfterBattle_F' post {   
          	afterBattle = 1;                                
          }
          
          HandleEvent(MoveUnits) 'SSClearBattleFlag_f' pre {
          int_t		i;
          
          	if (afterBattle == 1) {                     
          		afterBattle = 0;                     
          		for(i = 0; i < army[0].size; i = i + 1) {
          			GetUnitByIndex(army[0], i, tmpUnit)
                                    if(tmpUnit[i].valid) {
          				ClearBattleFlag(tmpUnit[i]);
          			}
          		}
          	}
          That should clear the battle flag for your army, after each battle. If that doesnt work, replace the line "for(i = 0; i < army[0].size; i = i + 1) {" with "for(i = 0; i < player[0].units; i = i + 1) {", and in the line below that, replace "army[0]" with "player[0].units", which will then clear the battle flag for all your units. If that doesn't work (my SLIC is not amazing), I'm sure someone else will point out my errors.

          Pheeuw, talked too much today, going to eat lunch
          [This message has been edited by Immortal Wombat (edited April 05, 2001).]
          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


          • #6
            Hi Ben

            I hope you had a good lunch with something to "undry" your mouth from the "lots of talking".

            Thanks a lot. I will try this out over the weekend.
            I will let you know the outcome of my tryings.

            Thanks and best regards

            Ralph

            Comment

            Working...
            X