Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Taming and OF_PetSlots bug? #1219

Closed
GladieUO opened this issue Mar 4, 2024 · 14 comments
Closed

Taming and OF_PetSlots bug? #1219

GladieUO opened this issue Mar 4, 2024 · 14 comments

Comments

@GladieUO
Copy link
Contributor

GladieUO commented Mar 4, 2024

// OF_PetSlots 00000010 // Enable AOS pet follower slots on chars. If enabled, all players must have MAXFOLLOWER property set (default=5)

If I activate this sphere.ini setting, set followerslots on NPC to 1, and have on char MAXFOLLOWERS=5 and try to tame the creature, it will immediately fall into this part.

  		SysMessageDefault(DEFMSG_PETSLOTS_TRY_TAMING);
  		return -SKTRIG_QTY;

Here is the full code: (it also add curfollowers to my status, but the creature is not tamed and doesnt act like it is.

  if (IsSetOF(OF_PetSlots))
  {
  	short iFollowerSlots = (short)pChar->GetDefNum("FOLLOWERSLOTS", true, 1);
  	if (!FollowersUpdate(pChar, maximum(0, iFollowerSlots), true))
  	{
  		SysMessageDefault(DEFMSG_PETSLOTS_TRY_TAMING);
  		return -SKTRIG_QTY;
  	}
  }

FOUND CONNECTION!
Im using also this flag, and this flag is making it not work together with the above one. If i disable this flag, the behaviour above works fine.

// EF_FollowerList 000080 // Save the followers to the list and enable CURFOLLOWER.n.UID, CURFOLLOWER.ADD/DEL and CURFOLLOWER.CLEAR commands.

CONNECTION NO.2

If i disable OF_PetSlots and enable EF_FollowerList, new curfollower is not being added at all, via Taming.

I think these two are interfering in to each other somehow a bugging.

@Jhobean
Copy link
Contributor

Jhobean commented Mar 4, 2024

I added this piece of code recently but it was working.
eef10d8

@GladieUO
Copy link
Contributor Author

GladieUO commented Mar 4, 2024

mmm the one you posted isnt in core right now actually. 🤔

@GladieUO
Copy link
Contributor Author

GladieUO commented Mar 5, 2024

Update, connection to the problem is flag listed below. If both activated, its bugging the taming. If I disable this one, its fine.

// EF_FollowerList 000080 // Save the followers to the list and enable CURFOLLOWER.n.UID, CURFOLLOWER.ADD/DEL and CURFOLLOWER.CLEAR commands.

@Jhobean
Copy link
Contributor

Jhobean commented Mar 6, 2024

These flag is a new feature.seem s bug was added

@GladieUO
Copy link
Contributor Author

GladieUO commented Mar 6, 2024

Updated first post, with connections I found.

@GladieUO
Copy link
Contributor Author

Also with both flags activated, the followerslots property doesnt work. Its always = 1.

@xwerswoodx
Copy link
Contributor

xwerswoodx commented Mar 25, 2024

If I understand you clearly, it's not a bug. Because EF_FollowerList is a new flag to add option to create list automatically for your followers. I meant FollowerSlots only working without this flag activated, because old system only keeping the number of followers while new system keeps list of followers. If you want to add npc manually to someone's follower list with EF flag active, you need to use

<PLAYER>.CURFOLLOWER.ADD <FOLLOWER.UID>

or

<PLAYER>.CURFOLLOWER.DELETE <FOLLOWER.UID>

to remove.

<PLAYER>.CURFOLLOWER.CLEAR

clears the list.

IF you activate EF_FollowerList you tell the Sphere, that you gonna use new system, so you need to use ADD command to add something manually to the list, CURFOLLOWER += 1 or anything similar to this not working with new system.

@GladieUO
Copy link
Contributor Author

GladieUO commented Mar 25, 2024

Ok and what about the Taming not working at all?

"If I activate this sphere.ini setting, set followerslots on NPC to 1, and have on char MAXFOLLOWERS=5 and try to tame the creature, it will immediately fall into this part."
"it also add curfollowers to my status, but the creature is not tamed and doesnt act like it is"

@xwerswoodx
Copy link
Contributor

Hmm, okay I see the issue I will take a look now

@cbnolok
Copy link
Contributor

cbnolok commented Apr 16, 2024

Just to have it clear myself: is every pet "worth" 1 slot if using EF_FollowerList? How do you set an upper limit, by tweaking the trigger or is there some default/fixed value?

cbnolok pushed a commit that referenced this issue Apr 28, 2024
* Fix crafting (#1190)

* Added .editorconfig (#1188)

* Fix Issue #1191 CANMASK not being saved on server reboot (#1192)

* Fix target cancelling upon death (#1186)

* Feature/meditation fail movement (#1184)

* Fix herding dupe char (#1185)

* Editable DispID for chars  (#1178)

* Fix issue #1097 (CAN_O_NOSLEEP not working after server reboot) (#1198)

* Fixed: The issue that causes more1/2 not saved correctly for spellbook. (Issue: #1221)

* Fixed: Players automatically become criminal to everyone when attack someone. (Issue: #1213)

* Fixed: CallGuard not working correctly on the players that only criminal for target. (Issue: #1213)

* Fixed: The wrong input of Kill trigger, to make it compatible with older sphere versions. (Issue: #1210)

* Added: New Layer LAYER_STORAGE (80) to let scripters create their own storage system on chars. (Issue: #1209)
- Only t_container and t_container_locked can be equipped to this layer.

* Changed: Decay time removed from spawned items. (Issue: #1218)

* Added: New spellflag SPELLFLAG_FIELD_RANDOMDECAY to randomize field tile decay time, like old sphere versions. (Issue: #1169)

* Changed: SERV.LOG command changed to support console colors. (Issue: #1158)

* Added: Sphere.ini setting CanPetsDrinkPotion (true in default) to make pets drink potion when their owner drop it on it. (Issue: #1147)

* Fixed: Missing fCheckOnly checks block the taming skill. (Issue: #1219)

* Added: New trigger @drink added for characters. (Issue: #1162)

* Added: New trigger @AFKmode added for characters. (Issue: #1161)

* Added: New trigger @reveal added for characters. (Issue: #1157)

* Added: New triggers @ArrowQuest_Add and @ArrowQuest_Close added for characters. (Issue: #1116)

* Added: New function triggers f_onaccount_block and f_onaccount_unblock. (Issue: #1156)

* Added: New function trigger f_onserver_broadcast. (Issue: #1145)

* Added: Two new LOCAL variables ItemPoisonReductionChance and ItemPoisonReductionAmount to @hit trigger. (Issue: #1159)

* added: MAGICF_REACTIVEARMORTH (010000) MAGICF flag to Sphere.ini to let people decide if reactive armor should reflect two handed weapons.

* Fixed: Possible fix for accesses and bans not loading for multis. (Issue: #1223)

* Fixed: Possible fix for wrong damage calculation of slayer bonus damage. (Issue: #1179)

* Added: REGION_FLAG_HOUSE (0x0100) flag for houses. (Issue: #1154)

* @Murdermark Update
Added: ARGO object for @Murdermark trigger to get killed character.

* @RegionResource Fix
Fixed: ARGN1 (reap amount) doesn't updated depends on the amount left on bit. (Issue: #1224)
Added: ARGO to get bit uid under @ResourceGather and @RegionResourceGather triggers.

* Multi Invalid Region Fix
Fixed: Possible fix for the OnRegionTrigger getting called on invalid region while multi creating/removing.

* CAN Flags DWORD to UINT64
Changed: dword CAN flags changed with uint64 to increase limits.

* Fixed: Possible fix for chat debugs. (Issue: #1212) (Issue: https://discord.com/channels/354358315373035542/483721253773901824/1224030729906815077)

* Added Missing Data to sphere.ini

* t_crop update
Added: "MOREX" key to set amount of fruit given when the crop ripped.
Changed: Now @create trigger called when crop grow to let people to change MORE values in stages if needed.
Added: @ResourceTest trigger added for crops. (This trigger works seperately for every stage)
Added: @ResourceGather trigger added for crops. (This trigger works seperately for every stage)

* Fixed: Possible fix for invalid ResourceID warnings. (Issue: #1071)

* Fixed: Missing REGION reference for multis. (Issue: #1228)

* Elemental Engine Flags
Added: ElementalEngineFlags variable added to sphere.ini to let servers to filter elemental engine. (Issue: #1230)

* Custom Multi Count
Fixed: An issue that causes T_MULTI_CUSTOM keep multi count saved. (Issue: #1232)

* Fixed: Bonded pets cannot see their master while DeadCannotSeeLiving equals to 2. (Issue: #1225)

* Standard Guild Align Fix
Fixed: The issue that causes Guilds without align shown enemy to the players with a guild with align. (Issue: #1208)

* GMs Dress Players
Fixed: GMs cannot dress up players. (Issue: #901)

* GM unequip fix
Fixed: Wrong check block GMs to unequip item from players.

* Custom Hosing Fix
Fixed: An issue that causes a visual bug to remove all tiles while removing a tile in higher floors. (Issue: #345)

* Merged Jhobean's Pr
Merged Jhobean's EMOTEF_EAT PR and split EAT flag for npcs and players. (PR: #1207)

* @hit and @GetHit as Item Triggers
Added: Trigger @hit is added as an item trigger.
Added: Trigger @GetHit is added as an item trigger.

* Visual Range Update
Added: MAPVIEWRADAR, MAPVIEWSIZE and MAPVIEWSIZEMAX to sphere.ini that overrides default visual range values. (Issue: #1144)

* H keyword for Hexadecimal returns
Added: 'H' shortcut for variables to get the value as hexadecimal.

* raydienull's LAYER_STABLE PR merge
- Merged: raydienull's LAYER_STABLE build merged, but LAYER_AUCTION keep same as LAYER_STABLE added as a new layer. (PR: #1201)
- Fixed: raydienull's LAYER_STABLE follower triggers doesn't called while taking pet out of stable.
- Fixed: raydienull's LAYER_STABLE doesn't work with the new follower system.
- Removed: Unnecessary LINK == PLAYER checks as figurines will be stocked on the owned player.

* c_man_gm
- Fixed: Setting GMs dispid to c_man_gm in-game, prevents GMs to use in-game commands.

* NPC Hear Distance
- Changed: Default NPC hear range reverted back to the 14 from 4, as it was 14 in older versions, as there was no reason for changing it. (Issue: #1215)

* CCChampion Rework
- Fixed: Candles keep stuck while killing npcs. (Issue: #564)
- Fixed: LEVELMAX doesn't affect the max level of champion system, and keep spawn npcs for default max level.
- Changed: Spawn system changed and now it automatically calculate the percentage of spawns per level in descending order.
- Changed: Candle calculation is now depend on max level, instead of static 4 level.
- Added: SRC added in @start trigger. SRC is a reference of player that starts champion spawner.
- Added: @complete trigger that triggers when champion completed. (Issue: #477)
- Added: @DelRedCandle trigger that triggers while red candle removing.
- Added: @DelWhiteCandle trigger that triggers while white candle removing.
- Added: @Level trigger that triggers when champion level up.
- Added: @Stop trigger that triggers when champion stopped.

* T_MULTI_ADDON Fix
- Fixed: Script multis move 1 block north when their type set as t_multi_addon. (Issue: #1238)

* ADDCOMPONENT
- Fixed: ADDCOMPONENT command was added as ADDCOMP for houses.

* Reactivated Hardcoded Fishing Skill
- Changed: Re-activated 56b style hardcoded fishing system, as I don't know why it's deactivated as softcoded system too bad and broken.
	- Fishing skill in default script pack should updated.
	- Delay should set to 2.5-3.0
	- All softcoded system should removed.
	- If anyone want to code their own fishing system, they can use SKF_SCRIPTED.

* EF_DAMAGETOOLS Update
- Added: EF_DAMAGETOOLS flag implemented to the sphere.
	- Added LOCAL.ITEMDAMAGECHANCE to the @success trigger for skills to decide damage chance for tools. (Default: 25)
	- Added LOCAL.ITEMDAMAGEAMOUNT to the @success trigger for skills to decide damage amount. (Default: 1)
	- EF_DAMAGETOOLS only affects the skills with SKF_GATHER flag.

* m_ridFruitOverride CAN_I_SCRIPTEDMORE update

* SPELLFLAG_NOUNPARALYZE
- Fixed: SPELLFLAG_NOUNPARALYZE flag wasn't working as intended.
@GladieUO
Copy link
Contributor Author

solved on dev branch, thank you!

@DavideRei
Copy link
Contributor

I have a question about the new system, if a follower have FollowerSlots > 1, isn't curfollower returning the wrong number?
CHC_CURFOLLOWER return m_followers.size() as followers number but that is the followers number not the followers total slots.
For example if i have 2 followers, the first 1 with FollowerSlots = 1 and the second one with FollowerSlots = 2, CURFOLLOWER return 2 instead of 3.

@GladieUO
Copy link
Contributor Author

GladieUO commented May 22, 2024

Yea because apparently this new system (EF_FollowerList) was made as new thing and is not using the followerslots. ( you would need to script your own ) with the new trigger.

@DavideRei
Copy link
Contributor

DavideRei commented May 22, 2024

The fact is the function seems to use FollowerSlot but even if you change it using the @FollowersUpdate trigger they don't get updated, because CURFOLLOWER read only the follower array dimension, so you can't customize it.
That would require a two-dimension array where for each follower you can save also the FollowerSlots.

@xwerswoodx

CScriptTriggerArgs Args;
        Args.m_iN1 = (iFollowerSlots >= 0) ? 0 : 1;
        Args.m_iN2 = abs(iFollowerSlots);
        if (OnTrigger(CTRIG_FollowersUpdate, pChar, &Args) == TRIGRET_RET_TRUE)
            return false;

        if (Args.m_iN1 == 1)
        {
            iFollowerSlots = -(short)(Args.m_iN2);
        }
        else
        {
            iFollowerSlots = (short)(Args.m_iN2);
        }

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

5 participants