UOGamers Community

This is a sample guest message. Register a free account today to become a member! Once signed in, you'll be able to participate on this site by adding your own topics and posts, as well as connect with other members through your own private inbox!

  • To obtain new Razor updates, please reinstall Razor from our new website.

[COMPLETE] Prisoners Should Give Double Compassion

Status
Not open for further replies.

Gisela

Bug Hunter
[COMPLETE] Prisoners Should Give Double Compassion

Type: OSI inconsistency

Basic Description: Prisoner rescues should give double compassion points. Currently they give the same as normal escortables.

Way to experience: Save a prisoner and escort him to his destination. Use admin commands to check compassion point gains.

Detailed Description: As Basic, above

Links:
http://update.uo.com/design_412.html
http://uo.stratics.com/content/virtues/compassion.shtml
http://www.uoguide.com/Compassion

Code:

Code:
Index: Scripts/Engines/AI/Creature/BaseCreature.cs
===================================================================
--- Scripts/Engines/AI/Creature/BaseCreature.cs    (revision 319)
+++ Scripts/Engines/AI/Creature/BaseCreature.cs    (working copy)
@@ -239,6 +239,8 @@
 
         private bool        m_Paragon;
 
+        private bool        m_IsPrisoner;
+
         #endregion
 
         public virtual InhumanSpeech SpeechType{ get{ return null; } }
@@ -249,6 +251,13 @@
             set{ m_IsStabled = value; }
         }
 
+        [CommandProperty( AccessLevel.GameMaster )]
+        public bool IsPrisoner
+        {
+            get{ return m_IsPrisoner; }
+            set{ m_IsPrisoner = value; }
+        }
+
         protected DateTime SummonEnd
         {
             get { return m_SummonEnd; }
Index: Scripts/Mobiles/Townfolk/BaseEscortable.cs
===================================================================
--- Scripts/Mobiles/Townfolk/BaseEscortable.cs    (revision 319)
+++ Scripts/Mobiles/Townfolk/BaseEscortable.cs    (working copy)
@@ -332,7 +332,7 @@
                     {
                         pm.SendLocalizedMessage( 1053004 ); // You must wait about a day before you can gain in compassion again.
                     }
-                    else if ( VirtueHelper.Award( pm, VirtueName.Compassion, 200, ref gainedPath ) )
+                    else if ( VirtueHelper.Award( pm, VirtueName.Compassion, this.IsPrisoner ? 400 : 200, ref gainedPath ) )
                     {
                         if ( gainedPath )
                             pm.SendLocalizedMessage( 1053005 ); // You have achieved a path in compassion!
Index: Scripts/Multis/Camps/OrcCamp.cs
===================================================================
--- Scripts/Multis/Camps/OrcCamp.cs    (revision 319)
+++ Scripts/Multis/Camps/OrcCamp.cs    (working copy)
@@ -17,6 +17,8 @@
 
         public override void AddComponents()
         {
+            BaseCreature bc;
+
             IronGate gate = new IronGate( DoorFacing.EastCCW );
             m_Gate = gate;
 
@@ -46,6 +48,8 @@
                 case 1: m_Prisoner = new SeekerOfAdventure(); break;
             }
 
+            bc = (BaseCreature)m_Prisoner;
+            bc.IsPrisoner = true;
             m_Prisoner.YellHue = Utility.RandomList( 0x57, 0x67, 0x77, 0x87, 0x117 );
 
             AddMobile( m_Prisoner, 2, -2, 0, 0 );
Index: Scripts/Multis/Camps/RatCamp.cs
===================================================================
--- Scripts/Multis/Camps/RatCamp.cs    (revision 319)
+++ Scripts/Multis/Camps/RatCamp.cs    (working copy)
@@ -17,6 +17,8 @@
 
         public override void AddComponents()
         {
+            BaseCreature bc;
+
             IronGate gate = new IronGate( DoorFacing.EastCCW );
             m_Gate = gate;
 
@@ -46,6 +48,8 @@
                 case 1: m_Prisoner = new SeekerOfAdventure(); break;
             }
 
+            bc = (BaseCreature)m_Prisoner;
+            bc.IsPrisoner = true;
             m_Prisoner.YellHue = Utility.RandomList( 0x57, 0x67, 0x77, 0x87, 0x117 );
 
             AddMobile( m_Prisoner, 2, -2, 0, 0 );
Tested:
- compiles
- does not crash the server
- works as intended

Comments:

I don't know whether this is the right way to do it.

I can't find the code for brigand camps, so they haven't been updated.
 

Attachments

  • compassion.txt
    2.7 KB · Views: 6

Gisela

Bug Hunter
Re: Prisoners Should Give Double Compassion

I've grepped the entire codebase and found no mention of brigand camps.

Are they some kind of Demise server-side spawn?
 

psz

Administrator
Re: Prisoners Should Give Double Compassion

Tis a Demise feature that I included years since OSI has Brigand Camps.


HOWEVER


As I have mentioned more times than I can cout, I absolute DETEST the Prison Camp system in RunUO ;->

It is neither accurate nor entirely functional.
 

Gisela

Bug Hunter
Re: Prisoners Should Give Double Compassion

Any post where you detail what you would like changed? I'm semi-interested since I want to raise Compassion on my chars.
 

psz

Administrator
Re: Prisoners Should Give Double Compassion

My example Bug Post, I think I made a comment in the Bug Tracking thread, about a dozen or so posts/reports on RunUO.com between betas 6 and 36....
 

Gisela

Bug Hunter
Re: Prisoners Should Give Double Compassion

Weird. My home server running runuo svn doesn't have this problem. I can [add orccamp and a player character with 100 lockpicking can pick the lock, loot the chest and set the prisoner free.

I tried it on flat ground in Trinsic and on the bumpy area outside Sacrifice where the Brigands spawn on Demise.
 

psz

Administrator
Re: Prisoners Should Give Double Compassion

It's not just that...


THERE SHOULDN'T BE A CAGE :->


There's no multi AT ALL on OSI.


It's a regular Escortable standing there yelling to be freed, some orcs/liz/rat/brigs wandering around, a chest, and some decoration.


That's it.
 

Gisela

Bug Hunter
Re: Prisoners Should Give Double Compassion

This is harder than it sounds. It's easy enough to stop reading and writing the gate, but what is creating the damned fence.
 

psz

Administrator
Re: Prisoners Should Give Double Compassion

RunUO uses a multi built into the client.

Same as houses or boats.


It's a series of predefined statics combined to make one multi.


The cell, firepit, decoration, and chest are all part of a single Multi. The script for the prison camps places the single multi to create the camp area.
 
Re: Prisoners Should Give Double Compassion

psz;561184 said:
It's not just that...


THERE SHOULDN'T BE A CAGE :->


There's no multi AT ALL on OSI.


It's a regular Escortable standing there yelling to be freed, some orcs/liz/rat/brigs wandering around, a chest, and some decoration.


That's it.

Are you really sure about this, psz?

I have just found this with UOFiddler:
 

Attachments

  • camp.jpg
    camp.jpg
    68 KB · Views: 78

psz

Administrator
Re: Prisoners Should Give Double Compassion

Yeah, I know. That's the multi.


OSI doesn't use it. Ever.


Go to T2A or Ilsh and you can find camps pretty easilly. They *NEVER* use those multis.


There's no table and chairs on OSI, there's no cage on OSI. The decoration is different and more spread out, etc etc etc
 
Re: Prisoners Should Give Double Compassion

hmmm... and what if we create a multi like that without the cage and the chest?
 

psz

Administrator
Re: Prisoners Should Give Double Compassion

You can't "Create a Multi"

Multis are built into the client itself, not the server.

They're added like items or statics.

Usually when you add a static, it's a 1 tile graphic (ex: [add static 0x120 )


However, with multis, it adds pretty much everything that's non movable (ex: [add static 0x4000 )


Camps, boats, houses, plots, etc are all mutlis.


The prisoner camps would have to be completely re-written (Mage and Healer camps are correct: OSI does use multis for them. Gypsy camps are handled more like the Orc/Ratman/Lizardman/Brigand camps)
 

Kiluad

Sorceror
Re: Prisoners Should Give Double Compassion

I don't get how it's not functional. you only have to steal in tram areas. fel lets you take what you want as you please, sure the double chest looks like ass, and yes having a cage drop on you when you're walking around is annoying, but it works all the time, least every single one i've used works, and i use to have a house at one of the fel spawns.
 
Re: Prisoners Should Give Double Compassion

psz;561394 said:
You can't "Create a Multi"

Multis are built into the client itself, not the server.

They're added like items or statics.

Usually when you add a static, it's a 1 tile graphic (ex: [add static 0x120 )


However, with multis, it adds pretty much everything that's non movable (ex: [add static 0x4000 )


Camps, boats, houses, plots, etc are all mutlis.


The prisoner camps would have to be completely re-written (Mage and Healer camps are correct: OSI does use multis for them. Gypsy camps are handled more like the Orc/Ratman/Lizardman/Brigand camps)

Hmmm... Maybe I am wrong, but I consider a "multi" as a bunch of statics.

What I mean:

when you call [add orccamp, you have a multi (that one in the image), a prisoner, a bunch of orcs, a chest exactly over the "multi" chest, and a key in the chest.
All is here: Scripts\Multis\Camps\OrcCamp.cs

I was looking to this: http://www.runuo.com/forums/custom-...eeting-area-competible-runuo-1-0-final-d.html

where you create an entire bunch of static. Technically it's not a "multi", but we could consider it for the final part.

Now, we have the list of components of that "multi" camp:
Code:
0x0821   0   1  0
0x0821   0   2  0
0x0821   0   3  0
0x0821   0   4  0
0x0823   1   0  0
0x1B1E   1   1  0
0x1B7C   1   2  0
0x0826   1   4  0
0x0823   2   0  0
0x0821   2   1  0
0x0821   2   2  0
0x0821   2   3  0
0x0822   2   4  0
0x0001   3   3  0
0x1640   4   0  0
0x0FAC   4   6  0
0x0974   4   6  0
0x0C10   5   3  0
0x0B3C   5   4  0
0x097D   5   4  6
0x0B5C   5   5  0
0x0E83   6   1  0
0x0B5D   6   4  0
0x1260   7   1  0
0x0E7C   7   7  0

Instead to let OrcCamp and RatCamp call that "multi", we could edit those scripts to "build these statics", excluding the gate and, especially, the chest.
Do you think it's possible to do this?
 
Re: Prisoners Should Give Double Compassion

Kiluad;561400 said:
I don't get how it's not functional. you only have to steal in tram areas. fel lets you take what you want as you please, sure the double chest looks like ass, and yes having a cage drop on you when you're walking around is annoying, but it works all the time, least every single one i've used works, and i use to have a house at one of the fel spawns.

there are also 2 chests in Ilsenhar and a pair in Trammel that "strangely" works well :p
 

psz

Administrator
Re: Prisoners Should Give Double Compassion

It *IS* non-functional.


YOU DON'T NEED A KEY ON OSI

The chest is a regular dungeon chest.

There's NO cage.

etc etc etc. The camps are just completely wrong.

Let's not get into the whole "Half of it ends up underground" problem.



As for the multis: The scripts for the camps call the multi by the client's internal number
Code:
		public OrcCamp() : base( 0x1D4C )

It looks for a multi number that's built INTO the client (similar to statics). You will, as I said, have to completely re-write BaseCamp and the individual camps to fix it to be like OSI. There's a reason it never got done ;->
 

Kiluad

Sorceror
Re: Prisoners Should Give Double Compassion

osd_daedalus;561405 said:
there are also 2 chests in Ilsenhar and a pair in Trammel that "strangely" works well :p

maybe i have it reserved. steal in fel, take in tram. i dunno, doesn't matter.

the chests half underground is annoying.
 
Re: Prisoners Should Give Double Compassion

Kiluad;561412 said:
maybe i have it reserved. steal in fel, take in tram. i dunno, doesn't matter.

the chests half underground is annoying.

sometimes happen also "half camp in the mountain" :D
 

uome

Bug Hunter
Re: Prisoners Should Give Double Compassion

osd_daedalus;561421 said:
sometimes happen also "half camp in the mountain" :D
Or in someones house!
I've seen it happen on dagger isle.
 
Status
Not open for further replies.
Top