Skip to content
Merged
Changes from all commits
Commits
Show all changes
40 commits
Select commit Hold shift + click to select a range
46ca482
Create manual-build.yml
rftrdev Nov 7, 2022
b522d14
Update manual-build.yml
rftrdev Nov 7, 2022
2c847fa
Update manual-build.yml
rftrdev Nov 7, 2022
38799e7
Update manual-build.yml
rftrdev Nov 7, 2022
c602ddb
Update manual-build.yml
rftrdev Nov 7, 2022
01af7fe
Update manual-build.yml
rftrdev Nov 7, 2022
532b8a8
Update manual-build.yml
rftrdev Nov 7, 2022
997866c
Update manual-build.yml
rftrdev Nov 7, 2022
0caa855
Update manual-build.yml
rftrdev Nov 7, 2022
4e2a5d4
Update manual-build.yml
rftrdev Nov 8, 2022
c844c7f
Update manual-build.yml
rftrdev Nov 8, 2022
4f17b62
Update manual-build.yml
rftrdev Nov 8, 2022
0599d14
Update manual-build.yml
rftrdev Nov 8, 2022
82924fd
Update manual-build.yml
rftrdev Nov 8, 2022
f4593b3
Update manual-build.yml
rftrdev Nov 8, 2022
329ba92
Update manual-build.yml
rftrdev Nov 8, 2022
dc7fa7f
Update manual-build.yml
rftrdev Nov 8, 2022
946bc3f
Update manual-build.yml
rftrdev Nov 8, 2022
00f7fdd
Update manual-build.yml
rftrdev Nov 8, 2022
b97d19c
Update manual-build.yml
rftrdev Nov 8, 2022
7d0765d
Update manual-build.yml
rftrdev Nov 8, 2022
0d937e4
Update manual-build.yml
rftrdev Nov 8, 2022
07637fb
Update manual-build.yml
rftrdev Nov 8, 2022
09263b6
Update manual-build.yml
rftrdev Nov 8, 2022
45c4980
Update manual-build.yml
rftrdev Nov 8, 2022
0927354
Create manual-build.yml
rftrdev Nov 7, 2022
b921fd7
Merge pull request #1 from rftrdev/manual-build-action
rftrdev Nov 8, 2022
707315b
Merge branch '1dot13:master' into master
rftrdev Nov 8, 2022
9f7a34d
Build actions (#2)
rftrdev Nov 9, 2022
97e6795
Merge branch 'master' of https://github.com/1dot13/source
rftrdev Nov 9, 2022
0174d48
Rename map editor output
rftrdev Nov 10, 2022
3e6c67f
Merge branch '1dot13:master' into master
rftrdev Nov 10, 2022
23c113a
Actions (#4)
rftrdev Nov 10, 2022
1e2b994
Merge branch '1dot13:master' into master
rftrdev Nov 11, 2022
09a0bfd
Merge branch 'master' of https://github.com/rftrdev/1dot13-source
rftrdev Nov 11, 2022
e35fd83
Delete manual-build.yml
rftrdev Nov 11, 2022
992491d
Delete test-action.yml
rftrdev Nov 17, 2022
890e15b
Merge branch '1dot13:master' into master
rftrdev Nov 17, 2022
e2b75de
Revert of 7baeb20
rftrdev Nov 20, 2022
e1abd31
Cleanup
rftrdev Nov 22, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
68 changes: 43 additions & 25 deletions Tactical/Inventory Choosing.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1474,24 +1474,43 @@ void ChooseArmourForSoldierCreateStruct( SOLDIERCREATE_STRUCT *pp, INT8 bHelmetC
// So we are going to try to pick something other than nothing but not guarantee it.
if (gGameExternalOptions.fSoldiersWearAnyArmour)
{
if (bHelmetClass < MIN_EQUIPMENT_CLASS) bHelmetClass = MIN_EQUIPMENT_CLASS;
if (bVestClass < MIN_EQUIPMENT_CLASS) bVestClass = MIN_EQUIPMENT_CLASS;
if (bLeggingsClass < MIN_EQUIPMENT_CLASS) bLeggingsClass = MIN_EQUIPMENT_CLASS;

// Make the first attempt for each item type
usHelmetItem = PickARandomItem(HELMET, pp->ubSoldierClass, bHelmetClass, TRUE);
usVestItem = PickARandomItem(VEST, pp->ubSoldierClass, bVestClass, TRUE);
usLeggingsItem = PickARandomItem(LEGS, pp->ubSoldierClass, bLeggingsClass, TRUE);

// PickARandomItem(getMatchingCoolness = TRUE) must have a strong reason to return 0 disregarding wantedCoolness
// we pass, e.g. itemChoices is empty or filled with improper items. So let's make another attempt to ensure we did
// all what we can. Unlikely it will help, though.
if (usHelmetItem == 0)
usHelmetItem = PickARandomItem(HELMET, pp->ubSoldierClass, bHelmetClass, TRUE);
if (usVestItem == 0)
usVestItem = PickARandomItem(VEST, pp->ubSoldierClass, bVestClass, TRUE);
if (usLeggingsItem == 0)
usLeggingsItem = PickARandomItem(LEGS, pp->ubSoldierClass, bLeggingsClass, TRUE);
INT8 i = 0;
if (bHelmetClass < 1) bHelmetClass = 1;
//search for a non-empty class with items we need
for (i = bHelmetClass;i <= 10;i++)
{
usHelmetItem = PickARandomItem(HELMET, pp->ubSoldierClass, i);
//if we find a non-empty class change to that and break
if (usHelmetItem > 0)
{
bHelmetClass = i;
break;
}
}
if (bVestClass < 1) bVestClass = 1;
//search for a non-empty class with items we need
for (i = bVestClass;i <= 10;i++)
{
usVestItem = PickARandomItem(VEST, pp->ubSoldierClass, i);
//if we find a non-empty class change to that and break
if (usVestItem > 0)
{
bVestClass = i;
break;
}
}
if (bLeggingsClass < 1) bLeggingsClass = 1;
//search for a non-empty class with items we need
for (i = bLeggingsClass;i <= 10;i++)
{
usLeggingsItem = PickARandomItem(LEGS, pp->ubSoldierClass, i);
//if we find a non-empty class change to that and break
if (usLeggingsItem > 0)
{
bLeggingsClass = i;
break;
}
}
}

//Madd: added minimum protection of 10 for armours to be used by enemies
Expand Down Expand Up @@ -3339,10 +3358,7 @@ UINT16 PickARandomItem(UINT8 typeIndex, INT8 bSoldierClass, UINT8 wantedCoolness
if ( i > gArmyItemChoices[bSoldierClass][ typeIndex ].ubChoices )
break;

if (getMatchingCoolness == TRUE)
uiChoice = Random(gArmyItemChoices[bSoldierClass][typeIndex].ubChoices);
else // otherwise there is a chance to pick nothing!
uiChoice = Random(gArmyItemChoices[bSoldierClass][typeIndex].ubChoices + (int)(gArmyItemChoices[bSoldierClass][typeIndex].ubChoices / 3));
uiChoice = Random(gArmyItemChoices[bSoldierClass][typeIndex].ubChoices + (int)(gArmyItemChoices[bSoldierClass][typeIndex].ubChoices / 3));

if ( uiChoice >= gArmyItemChoices[bSoldierClass][ typeIndex ].ubChoices )
{
Expand All @@ -3364,7 +3380,7 @@ UINT16 PickARandomItem(UINT8 typeIndex, INT8 bSoldierClass, UINT8 wantedCoolness

pickItem = FALSE;

if (usItem > 0 && Item[usItem].randomitem == 0 && ItemIsLegal(usItem))
if (usItem >= 0 && Item[usItem].ubCoolness <= wantedCoolness && ItemIsLegal(usItem))
{
// On day
if (DayTime() == TRUE)
Expand All @@ -3386,6 +3402,9 @@ UINT16 PickARandomItem(UINT8 typeIndex, INT8 bSoldierClass, UINT8 wantedCoolness
pickItem = TRUE;
}
}

if (Item[usItem].randomitem > 0)
pickItem = FALSE;
}


Expand All @@ -3395,8 +3414,7 @@ UINT16 PickARandomItem(UINT8 typeIndex, INT8 bSoldierClass, UINT8 wantedCoolness
if (pickItem == TRUE)
{
// pick a default item in case we don't find anything with a matching coolness, but pick the most matching (by coolness) item
if ( defaultItem == 0 ||
abs((int)wantedCoolness - (int)Item[usItem].ubCoolness) < abs((int)wantedCoolness - (int)Item[defaultItem].ubCoolness))
if (defaultItem == 0 || Item[usItem].ubCoolness > Item[defaultItem].ubCoolness)
{
defaultItem = usItem;
}
Expand Down