forked from agata-wod/wod
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcore-changes.txt
6483 lines (5538 loc) · 335 KB
/
core-changes.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
-- POL099 --
01-04-2013 Tomi:
Added: Syshook CanTrade
parameters ( character, drop_on_chr, item )
Note: This syshook runs when dropping an item on a character or when trying to add an item to a tradewindow
12-15-2012 Tomi:
Fixed: Items now get their facing from tiledata flag if no itemdesc entry is found
This fixes wrong lightsources for items such as lampposts
12-08-2012 Tomi:
Fixed: Typo in uo.em with new LISTEX flags
Added: const REALM_BRITANNIA_ALT to uo.em
12-05-2012 Tomi:
Added: Pol now send on invul/murderer status changed for >= KR Clients packet 0x17 to get Yellow or Red color health bars
Changed: UO:ListMobilesNearLocationEx added 2 new flags LISTEX_FLAG_PLAYERS_ONLY and LISTEX_FLAG_NPC_ONLY
Changed: combat.cfg option "SendAttackmsg" to "SendAttackMsg" to match cases of other options
Fixed: UO:MoveItemToContainer doesnt crash anymore when using add_to_exisitng stack parameter
Fixed: item methods .SplitStackAt and .SplitStackInto doesnt crash Pol anymore when using add_to_existing_stack parameter
11-16-2012 Turley:
Added: string methods:
str.length() : returns like len(str) the length of the string
str.upper() : returns like upper(str) the uppercase version and also modifies the str
str.lower() : returns like lower(str) the lowercase version and also modifies the str
str.find(Search,[Start]) : returns like Find(string, search, start) the index of the first occurance of 'search' after 'start' within str
but unlike the basic.em function the Start parameter is optional if not given it searches the whole string
str.join(array) : returns a string which is the concatenation of the array elements, seperated by str
11-14-2012 Turley:
Changed: SplitWords( str, delimiter := " ", max_split := -1 )
it has now an additional parameter max_split, if given it limits the number of times that a string will be split
default: -1 no limit
(Patch submitted by andenixa)
Added: ecompile its now possible to override through the cmdline
GenerateDependencyInfo entry with "-D-"
GenerateDebugInfo entry with "-x-"
11-10-2012 Turley:
Added: uoclient.cfg Listener property "KeepClients" 1/0 default 0
if set to 1 clients keep this listener port even after different gameserver select
Note: actually 1 is the old behaviour and 0 the old behaviour of pol.cfg ListenPort
Added: pol.cfg "UseSingleThreadLogin" 1/0 default 0
if set all prelogin clients are handled inside the listener thread and not inside an extra thread
this will reduce the amount of thread creates and destroys
10-14-2012 Tomi:
Added: SystemHook "WarmodeChange" called when a character changes warmode status either by member .warmode or by clicking the warmode button on the paperdoll
Params CharRef and new_warmode_status
Return value is ignored
10-09-2012 Tomi:
Fixed: packet 0x17 ( poison health bar packet ) was sending 2 bytes with wrong endian when sending to nearby clients
10-08-2012 Turley:
Fixed: secured Shadowrealm delete, it will now iterate through all StorageArea Items and check if old shadowrealm property exists
10-06-2012 Tomi:
Changed: setting an equipped item on NPC to movable 0 will make it visible on the corpse but invisible in the corpse, same as hair and beard have worked until now.
10-05-2012 Turley:
Added: ecompile parameter -wP
Added: ecompile.cfg entry ParanoiaWarnings
Note: since "{}" is valid syntax, only complain about it if ParanoiaWarnings is enabled
09-29-2012 Turley:
Added: ecompile parameter -T
Added: ecompile.cfg entry ThreadedCompilation
Note: if set will use openmp for parallel compilation
09-25-2012 Kevin:
Fixed: Guild and alliance messages no longer send as regular speech messages. They are sent to all guild or alliance members online.
Added: servspecopt.cfg CoreGuildMessages=0/1 default 1 to determine if core should handle guild and alliance messages.
08-29-2012 Turley:
Fixed: Crash if a attached script kills the attached npc
08-27-2012 Tomi:
Changed: MoveItemToContainer( item, container, x := -1, y := -1 ); to MoveItemToContainer( item, container, x := -1, y := -1, add_to_existing_stack := 0 );
Changed: item.SplitStackInto( container, amount ) to item.SplitStackInto( container, amount, add_to_existing_stack := 0 )
Note: The optional add_to_existing_stack parameter defines if the items moved to the container will look for an existing stack and add to it or just add as a new item ( old behaviour )
If add_to_existing_stack == 1 and there is no stack in the container, it will return Error "There is no existing stack", so its up to scripts to check this.
Added: item.HasExistingStack( container ) to allow scripts to check if there is an existing stack in a container or not, returns the ItemRef of the stack if it exists.
08-26-2012 Nando:
Removed: Support for ListenPort in pol.cfg when Multithread is activated. Everyone should
be using uoclients.cfg by now!
08-01-2012 Kevin:
Added: R/W member carrying_capacity_mod for mobiles to modify carrying capacity on a
mobile-per-mobile basis. Is taken into account prior to global ssopt modifier.
08-01-2012 Kevin:
Added: osmod::Debugger() to put current script in debug state to be attached by external
debugging application
Added: stacktrace debug command to print stacktrace. Displays:
<size of stack>
foreach stack element:
<program counter>
<file number>
<line number>
<number of local variables>
foreach local variable:
<variable name> <packed value>
07-12-2012 Tomi:
Added: combat.cfg entry "SendAttackMsg" values 0/1 defaults to 1
setting this to 0 stops the core repsys system sending "is attacking you" messages.
06-03-2012 Tomi:
Added: Readonly members .active_skill and .casting_spell for characters
return values 0/1 if character has an active attached skill or spell script
05-01-2012 Tomi:
Fixed: On equipped items .resist_*_mod members did not update character status window when changed
Patch submitted by Agata
04-15-2012 Tomi:
Added: R/W member editable 0/1 for maps
04-14-2012 Tomi:
Added: Support for new map message packet 0xF5 for clients 7.0.13+
This packet supports the new facetXX.mul files and now can use every different realm for cartography maps and sea charts.
Added: r/w member .facetid for Maps
This has actually nothing to do with realms, the value is the same as in FacetXX.mul file
04-06-2012 Tomi:
Fixed: Roof problem at 4th floor on a custom house.
Patch submitted by Agata
Added: Packet 0xD6 to be ignored for activity ( fixes inactivity logout for ML+ )
Patch submitted by OWHorus
04-05-2012 Kevin:
Added: ecompile.cfg directive "ErrorOnWarning" and ecompile switch -y to treat warnings
on errors during ecompile. Default is 'false'
Fixed: various locations were showing warnings even without the -w switch provided.
03-26-2012 Tomi:
Added: character readonly member .lastcoord returns struct{.lastx, .lasty, .lastz}
03-09-2012 Tomi:
Fixed: uo::SendInstaResDialog() was sending wrong packet
03-07-2012 Tomi:
Added: scripts/misc/dblclickitem.ecl to run a script on every double click on items.
params are (mobile, item)
usefull for removing meditation stuff and such in 1 place instead of every script.
Note: this script will not be attached to the mobile and will run before any usescript.
02-08-2012 Tomi:
Added: character readonly member .tradewindow
return ContainerRef if the char has an active trade and error if no active trade
02-06-2012 MuadDib:
Fixed: Added orphan checks in Character::get_from_ground for both passed serial and items it itr through. Proper logging, returns, and
continue used to keep from attempting movement of orphaned items after log report.
02-05-2012 Tomi:
Changed: AR not required in ArmorDescs for Pol to start anymore, so now if Physical Resist used only no need to define AR 0 in the ArmorDesc.
Changed: AR in ArmorDescs defaults to 0.
02-02-2012 Tomi:
Added: Readonly member .multiid for boats and houses
Fixed: Old boats didnt read the components correctly on server restart
01-21-2012 Tomi:
Removed: Graphic from multis, no graphic entry needed for multis in itemdescs anymore, uoconvert doesnt add a graphic value to multis anymore.
Added: MultiID entry to boats.cfg instead of the ObjType.
Changed: Multi itemdescs now require MultiID to be defined for each multi.
Note: Multi objtypes still need to be > MaxTileID from pol.cfg
Example of a multi entry in itemdesc
Boat 0x10000
{
Name SmallBoatN
MultiID 0x0
}
Added: boats.cfg is now shipped with the core too with boats up to date with HSA so just remove what you dont use.
Note: Reconvert of multis.cfg with UOConvert needed
Make sure you have a itemdesc entry for every boat direction
01-21-2012 Turley:
Fixed: RequestInputUC() for eg russian chars
01-16-2012 Turley:
Changed: SpeedUp for uoconvert
01-14-2012 Turley:
Changed: UnicodespeechEvent additional Member "tokens" if speech has (speech.mul) Tokens, gives array of spoken TokenIDs
Added: servspecopt.cfg SeperateSpeechTokens=1/0 default 0 when set RegisterForSpeechEvents() and EnableEvents/DisableEvents behave different
Added: uo:RegisterForSpeechEvents Flags LISTENPT_HEAR_TOKENS,LISTENPT_NO_SPEECH
Added: SYSEVENT_TOKEN_SPEECH:=0x4000 and SYSEVENT_TOKEN_GHOST_SPEECH:=0x8000 for uo:EnableEvents/DisableEvents
Note: if SeperateSpeechTokens is set you can control which events you get,
for NPCs you only get speech with tokens if you set SYSEVENT_TOKEN_SPEECH/SYSEVENT_TOKEN_GHOST_SPEECH
and non Token speech with SYSEVENT_SPEECH,SYSEVENT_GHOST_SPEECH
for RegisterForSpeechEvents() you get speech with and without Tokens when setting LISTENPT_HEAR_TOKENS and no speech without Tokens
setting LISTENPT_NO_SPEECH
Note: Token and nonToken Eventtype is still the same (SYSEVENT_SPEECH)
01-03-2012 Turley:
Changed: major rewrite of primitive operators +,-,*,/,...
major speedup of +=,-=,...
Added: finally support for +=,-=,*=,/=,%= with objectmembers, like who.resist_fire_mod+=1
Note: if member would return UnInit or Error it does nothing
so its like (only faster and atomic):
var temp:=who.resist_fire_mod;
if (!(TypeOfInt(temp) in {OT_UNINIT,OT_ERROR}))
temp+=1;
who.resist_fire_mod:=temp;
endif
01-02-2012 Turley:
Added: XMLFile/XMLNode.removexmlnode(int value)
removes node of given index
XMLFile/XMLNode.removexmlnode(XmlNode node)
removes given node
XmlNode.clonenode()
since all NodeObjects get destroyed when the corresponding XmlFileObject is destroyed, use this method to store a node for later use.
12-18-2011 Nando:
Changed: internal handling of intrinsic weapons' unload.
Removed: INTRINSIC property from Weapon template in itemdesc.cfg. An error occurs
if it's set. Some shards might have forgot to set it, which would cause
damage to intrinsic wrestling weapon. This is now handled automatically.
12-17-2011 Nando:
Changed: boats.cfg entries are now "Name Graphic X Y <Z>", where Z is optional and
defaults to zero.
12-17-2011 Tomi:
Added: Support for hued boats, use the normal .color r/w member to change the hue
Patch Submitted by Agata
12-14-2011 Tomi:
Changed: objtype vectors changed to maps to only reserve as much memory as there are
itemdesc entries, not reserving memory for up to 4 billions of objtypes.
Changed: boats.cfg entries changed from "Name Graphic X Y" to "Name Graphic X Y Z"
because some of the new boat components requires different Z levels than the boat
itself.
12-13-2011 Austin:
Added: Support for destroy scripts on multis.
12-13-2011 Tomi:
Added: Support for HSA boats ( no smooth move yet, but now all boats are usable )
Changed: boat.cfg to support new entries "Rope", "Wheel", "Hull", "Tiller", "Rudder", "Sails", "Storage", "Weaponslot"
there can be more than 1 of each entry
the old entries "Tillerman", "Hold", "PortGangplankExtended", "PortGangplankRetracted", "StarboarGangplankExtended", "StarboardGangplankRetracted" support just 1 entry each or the boat members get broken
Added: ReadOnly members for boats
.components returns an array of ItemRefs of all the components on the boat
.hull returns an array of ItemRefs of all the hull components on the boat, or empty array if none.
.rope returns an array of ItemRefs of all the rope components on the boat, or empty array if none.
.wheel returns an array of ItemRefs of all the wheel components on the boat, or empty array if none.
.rudder returns an array of ItemRefs of all the rudder components on the boat, or empty array if none.
.tiller returns an array of ItemRefs of all the tiller components on the boat, or empty array if none.
.sails returns an array of ItemRefs of all the sails components on the boat, or empty array if none.
.storage returns an array of ItemRefs of all the storage components on the boat, or empty array if none.
.weaponslot returns an array of ItemRefs of all the weaponslot components on the boat, or empty array if none.
Changed extobj.cfg to support new entries for all the new boat component types and changed the default value of all entries.
extobj.cfg entries with default values:
Tillerman=0x1F010
Port_Plank=0x1F011
Starboard_Plank=0x1F012
Hold=0x1F013
Rope=0x1F014
Wheel=0x1F015
Hull=0x1F016
Tiller=0x1F017
Rudder=0x1F018
Sails=0x1F019
Storage=0x1F01A
Weaponslot=0x1F01B
Wrestling=0x1F020
Mount=0x1F021
Secure_Trade_Container=0x1FF01
Wornitems_Container=0x1FF02
Note: extobj entries just let you define the objtypes, all of these still have to be defined in itemdescs for boats to work correctly.
extobj.cfg is now shipped with the core.
12-05-2011 Tomi:
Fixed: Door methods .open() and .close() were working opposite what they should.
12-04-2011 Tomi:
Fixed: EA broke the prof.txt with the latest clients adding "Evaluating Intelligence" and "Spirit Speak" with spaces that resulted into skillnumber 0xFF and skillvalue 0
Added: UO::UpdateItem( item );
updates the item to every client in range, good to use for example after returning 1 in some packethook and the item get invisible.
12-01-2011 Nando:
Fixed: Client hanging after having his connection refused on login. I recommend testing
different ways of having a client disconnected, like acct.disable(), .ban() and others.
12-01-2011 MuadDib:
Changed: UoClientGeneral.maxskills changed to unsigned short. Few places in loops with it changed to use same for the loop counter.
11-30-2011 Tomi:
Fixed: Old style spellbooks.
11-29-2011 MuadDib:
Fixed: Fixed a script breaker caused by inserting new TypeOfInt() constants in the middle of the Enum. Moved SQL Types to end of list.
Added: Added SQL entries to the Basic.EM since were missing.
11-29-2011 Tomi:
Added: Opengraphic itemdesc entry for Doors ( optional parameter, no need to define if you dont want to use the built in methods )
Changed: how built in .open() .close() and .toggle() methods works. The now read the graphic what to open to from itemdesc instead of just checking with & 0x1.
this makes those methods works for new doors too and not only T2A era doors.
Changed: basic::CChrz( intarray ) to basic::CChrz( intarray, break_at_first_null := 0 );
if the break_at_first_null parameter is 0 it uses the old behaviour to just skip the nulls and still convert everything
if the break_at_first_null parameter is set to 1 it stops the conversion to string at the first null it finds.
Changed: All Write(ctBeu16( calls for graphics and colors to use WriteFlipped, this seems to have fixed the assertion errors that occured with removal of the color_ext and graphic_ext
11-28-2011 MuadDib:
Removed: UObject->Color_Ext : Removed, and when used is replaced with ctBEu16() calls. This includes read/write of /data files.
Removed: Last of any UOX references for imports. Most was all commented, a few empty refences was also left. All now removed completely.
11-27-2011 MuadDib:
Removed: UObject->Graphic_Ext : Removed, and when used is replaced with ctBEu16() calls. This includes read/write of /data files.
Note: UObject->Serial_Ext will not be removed as previously considered, due to the orphan system making primary use of this.
11-27-2011 Nando:
Fixed: corrected memory leak in cfgfile::GetConfigStringDictionary(...)
11-26-2011 Tomi:
Changed: CascZ( str ) to CascZ( str, nullterm := 0 )
if nullterm 1 it adds the terminating 0 in the end of array.
Note: Recompile of scripts needed.
11-24-2011 Tomi:
Added: Support for Mysticism and BardMasteries spell books
Mysticism Spell ID's 678 -> 693 and BardMasteries spell ID's 701+
11-23-2011 Tomi:
Added: can_insert and on_insert scripts for Tradewindows
11-22-2011 Kevin:
Added: pol/sqlscrobj.cpp pol/sqlscrobj.h
Changed: pol/module/sqlmod.cpp pol/module/sqlmod.h
Add preliminary MySQL database support.
New eScript objects: BSQLConnection, BSQLResultSet, BSQLRow
Added several new sql module functions:
mysql_connect(host,username,password);
mysql_query(connection,query);
mysql_fetch_row(result);
mysql_affected_rows(result);
mysql_num_fields(result);
mysql_num_rows(result);
mysql_select_db(connection,database);
mysql_field_name(result,column_index);
mysql_free_result(result);
mysql_close(connection);
In order to build with MySQL support, define the HAVE_MYSQL preprocessor directive in your build configuration.
You must have the MySQL headers and libraries installed.
Only really tested with dynamically linking mysql libraries on Linux.
Added: pol/network/auxclient.h
Changed: pol/network/auxclient.cpp pol/module/osmod.cpp pol/module/osmod.h clib/socketsvc.cpp clib/socketsvc.h
Moved AuxClient-related classes to its own header file (shared between auxclient.cpp and osmod.cpp)
Implemented os::OpenConnection() to create outgoing TCP/IP connections.
Changed: runecl/runecl.cpp
Added the sql module to runecl to allow quick testing
Changed: pol/uoscrobj.cpp pol/mobile/charactr.cpp pol/mobile/character.h bscript/parser.cpp bscript/objmembers.h
Added read/write property "mountedsteps" for mobiles. Represents number of steps taken while character was mounted.
Changed: bscript/parser.cpp
Declaring an array only using "{}" will show a compiler warning; please explicitly state 'array', 'struct', or 'dictionary'
Changed: pol/pol.cpp
If using Linux, remove pol.pid on shutdown of pol.
Changed: pol/uoexec.h pol/scrsched.cpp
Added script option "AUXSVC_ASSUME_STRING" which will allow aux service connections to send and receive non-packed strings.
Changed: ecompile/ecompile.cpp
If using Linux, a slash ("/") cannot be used to define ecompile options to allow support for absolute filenames.
Changed: bscript/object.cpp bscript/bobject.h
Implemented array operation MultiSubscript. Will return a splice of an array, eg:
array{"a","b","c","d","e"}[2,4] will return array{"b","c","d"}
11-12-2011 Tomi:
Added: Pol/config/extobj.cfg
Values it accept now and default values are
Tillerman=0xF010
Port_Plank=0xF011
Starboard_Plank=0xF012
Hold=0xF013
Wrestling=0xF020
Mount=0xF021
Secure_Trade_Container=0xFF01
Wornitems_Container=0xFF02
Note: These values HAVE TO BE > pol.cfg max_tile_id and the same as objtype for them in itemdescs
Added: UOExpansion HSA server sends now 0x387DF
11-11-2011 Tomi:
Changed: Objtypes are now from 2 up to max_objtype from pol.cfg
Note: if objtypes <= pol.cfg max_tile_id and no graphic defined in itemdesc Pol uses objtype as graphic.
Multis and custom items should all be moved to > pol.cfg max_tile_id
Added: support for new 0xA9 packet for clients >= 7.0.13.0
Changed: startlocs.cfg default values for MapID ( 0 ) and Cliloc ( 1075072 which is the Yew town information )
Example:
StartingLocation Yew
{
City Yew
Description Town Center
Coordinate 535,992,0
MapID 0
Cliloc 1075072
}
Note: MapID is the same number as in mapX.mul files
Cliloc values are the description of the start locations
Newest clients has max stats during char creation 90
11-06-2011 Tomi:
Added: pol.cfg setting MaxObjtype <default 0x20000>
Note: can be any value between 0x20000 and 0xFFFFFFFF
10-26-2011 Tomi:
Added: support for clients >= 7.0.16.0 ( 2D ) char create packet 0xF8
Enchanced clients still use packet 0x8D
10-15-2011 Austin:
Added: .doubleclickrange for items (read only).
09-03-2011 Turley:
Added: DestroyMulti(house) returns error "House currently being customized."
Added: house.cancelediting(chr, drop_changes) will stop editing mode.
drop_changes 1/0 if true drops all non committed changes
Errors: "House is not custom","House is currently not been edited","Character is not editing this house"
Added: Syshook CloseCustomHouse(mobile, house)
called after client quits editing, or when house.cancelediting() is called
return value is ignored
Added: servspecopt.cfg
"SpeedHack_MountRunDelay" default 80 ms
"SpeedHack_MountWalkDelay" default 180 ms
"SpeedHack_FootRunDelay" default 180 ms
"SpeedHack_FootWalkDelay" default 380 ms
Change them on your own risk
08-08-2011 Austin:
Added: servspecopt.cfg flag "ScriptedMerchantHandlers" default is 0 which results in no change in behavior.
If enabled, the below change will come into effect:
Changed: When a player buys something from a merchant the core will not longer handle taking gold from the player, and moving items to the players pack.
When the event for EVID_MERCHANT_SOLD and EVID_MERCHANT_BOUGHT is sent it will be a struct containing the following struct:
struct.type = EVID_MERCHANT_SOLD or EVID_MERCHANT_BOUGHT
struct.source = player buying
struct.shoppinglist = array( struct.item, struct.amount )
The shopping list items will still be items in the merchant's container.
It is up to the script to split the items from the stacks there and move them to the player's pack.
It is also up to the script to handle gold checks and consumption.
Added: item.SplitStackInto(container, amount)
Will split the item into 2 stacks. Returns a reference to the new stack made from item. Places new stack into the container.
Added: item.SplitStackAt(x, y, z, realm, amount)
Will split the item into 2 stacks. Returns a reference to the new stack made from item. Places new stack at the coordinates.
05-19-2011 Turley:
Added: CustomHousing Support (beta)
officially added uo::SendHousingTool( who, house );
Added: script call of "scripts/misc/customhousecommit.ecl" on commit (noncritical)
params: ( who, house, houseelemarray )
houseelem = struct{graphic,xoffset,yoffset,z}
to get the real coords from an elem add house.x/y
called after client presses the commit button
to accept the changes call new method house.acceptcommit(chr,1) or house.acceptcommit(chr,0) to drop the commit
main purpose should be calculation of cost (with delta support for later changes),
link establishing of houseteleporters (0x181D - 0x1828)
and adding a signhanger/sign if you didnt added it during multifoundation buildup
Doors and Teleporters are added to house components as normal items without any special treatment
so dont forget to add scripts/itemdesc entries
Added: member multi.house_parts
returns array of structs{graphic,xoffset,yoffset,z} or error if not a custom house, or currently been edited
to get the real coords from an elem add house.x/y
Added: method multi.addhousepart(graphic,xoffset,yoffset,z) returns true or error
Added: method multi.erasehousepart(graphic,xoffset,yoffset,z) returns true or error
Added: members multi.house_editing / who.house_editing returns true if house is currently been edited / who is currently editing
Note: house.setcustom(1) is needed before SendHousingTool() works
Note: during editing chr is only allowed to walk inside the house
all components which are not invisible get removed from component list during edit and added to design
(not invisible to give the chance to eg protect a house sign from been removed from the editing char)
any item inside the house will be invisible for the chr
any other mobiles get moved outside the house
Note: param houseelemarray in script call is the current list of houseparts,
multi.house_parts gives you the last stored list
Note: until no house.acceptcommit() is called and start of commitscript no new SendHousingTool() for this house is allowed
05-04-2011 Turley:
Fixed: Questarrow packet
04-30-2011 Turley:
Fixed: enter/leave-events for NPCs (OWHorus)
Fixed: diagonal moves in npc::CanMove() and uo::FindPath() (OWHorus)
04-03-2011 Turley:
Added: uotool param checkmultis
prints infos about used center item
03-12-2011 Turley:
Fixed: npc:SayUC() sends SpeechEvent for do_event==SAY_DOEVENT_ENABLE
Changed: removed warning "No handler for skill.." and changed sysmsg to "That skill cannot be used directly."
since most of the time the behaviour is wanted
Added: basic::TypeOfInt( expr ) + basic.em constants
returns like TypeOf() the type of given parameter, but returns instead of a string an integer (see basic.em constants)
since integer comparison are way faster then string comparison this function should always be used for comparisons
03-10-2011 Turley:
Added: pol.cfg AccountDataSave (default -1)
Values:
-1 : old behaviour, saves accounts.txt immediately after an account change
0 : saves only during worldsave (if needed)
>0 : saves every X seconds and during worldsave (if needed)
02-15-2011 Turley:
Changed: "in" keyword now returns the arrayindex or 0 if no match was found
02-05-2011 Turley:
Fixed: no exception will be thrown if region enter/leavescript doesnt exist
Fixed: windows trayicon
10-22-2010 Turley:
Fixed: UOHSA packet changes
Added: mobile.clienttype / client.clienttype HSA flag 0x200
09-06-2010 Turley:
Added: TinyXML based xml reading/writing
Added: file::OpenXMLFile(filename)
opens given filename and returns XMLFile object
fileaccess.cfg is checked
file::CreateXMLFile()
creates an empty XMLFile object
XMLFile.setxmldeclaration(string version, string encoding, string standalone)
sets xmldeclaration eg <?xml version="1.0" encoding="UTF-8" standalone="no" ?>
XMLFile.appendxmlnode(string value, struct{attributes})
appends Node with name value and given attributes (key=name, value=value)
XMLFile.appendxmlcomment(string value)
appends Comment
XMLFile.removexmlnode(string value)
removes first node of given value
XMLFile.savexml(string filename)
saves to filename
fileaccess.cfg is checked
XMLFile.xmltostring([string indent])
returns the xml file as String with given indent string {default "\t"}
XMLFile[string] returns first node of given name
XMLFile[integer] returns node of given index (1-based)
Added: XMLNode object
XMLNode.attributes
returns XMLAttributes object
XMLNode.type
returns type string
(XMLComment, XMLDeclaration, XMLDocument, XMLElement, XMLText, XMLTypeCount, XMLUnknown)
XMLNode.firstxmlchild([string value])
returns first child or first child of given name
XMLNode.nextxmlsibling([string value])
returns next sibling, or next sibling of given name
XMLNode.appendxmlnode(string value, struct{attributes})
appends Node with name value and given attributes (key=name, value=value)
XMLNode.appendxmlcomment(string value)
appends Comment
XMLNode.setxmlattribute(struct{attributes})
sets attributes for node
XMLNode.removexmlattribute(string key)
removes attribute of given key
XMLNode.removexmlnode(string value)
removes first node of given value
XMLNode.appendxmltext(string text)
appends text to node
XMLNode[string] returns first node of given name
XMLNode[integer] returns node of given index (1-based)
Added: XMLAttributes object
XMLAttributes.propnames()
returns Array of all attribute names
XMLAttributes[string] returns value of given attribute name
Added: foreach loop support:
XMLFile, XMLNode: iterates over all child Nodes
iterator is XMLNode object, "_iterator_iter" is integer index
XMlAttributes: iterates over all attributes
iterator is a struct with key=attributename, value=attributevalue
"_iterator_iter" is integer index
Note: small examples:
one way to read an xml file:
<?xml version="1.0" ?>
<root>
<Hello>World</Hello>
<!--Comment-->
<nodetwo i="1" />
</root>
var file:=OpenXMLFile("helloworld.xml");
parsenode(file,"");
function parsenode(node,i)
foreach blubb in node
syslog(i+cstr(blubb)+" ["+blubb.type+"] ("+cstr(_blubb_iter)+")");
parseattrib(blubb,i+"-");
parsenode(blubb,i+" ");
endforeach
endfunction
function parseattrib(node,i)
foreach ele in (node.attributes)
syslog(i+cstr(ele)+" ("+_ele_iter+")");
endforeach
endfunction
one way how to create such an file:
var file:=CreateXMLFile();
file.setxmldeclaration("1.0","","");
file.appendxmlnode("root");
file["root"].appendxmlnode("Hello");
file["root"]["Hello"].appendxmltext("World");
file["root"].appendxmlcomment("Comment");
file["root"].appendxmlnode("nodetwo",struct{i:=1});
file.savexml("helloworld.xml");
08-20-2010 Turley:
Fixed: util:StrFormatTime() checks if format string is correct and if not returns "Invalid Format String." error
instead of server crash
08-09-2010 Turley:
Fixed: exported function calls a different exported function stops execution (eg repsys functions in same script)
06-22-2010 Turley:
Fixed: uo::RestartScript() wakes up old script so it stops immediately
06-19-2010 Turley:
Fixed: uo::SendDialogGump SENDDIALOGMENU_FORCE_OLD for 2d 7.x clients (UOKR & UOSA clients ignore the flag)
03-27-2010 Turley:
Added: os::Start_Skill_Script( chr, attr_name, script_name := "", param := 0 )
starts for given chr and attr_name definied script (overrideable with param script_name)
param is any UObject given to skill script as second param (first is chr)
performs the same checks like normal skillusage (death,frozen,skilldelay,...)
(Tomi)
03-26-2010 Turley:
Changed: uo::DisconnectClient() now accepts client or character object (Tomi)
03-24-2010 Turley:
Added: ClientRef object
pkt.sendpacket() & SendPacket() now accepts client or character
r/o members:
ip, acctname, clientversion, clientinfo, clienttype, clientver_detail, uo_expansion_client
methods:
compareversion()
used as prelogin param for packethooks instead of old struct (so you can send packets)
Added: character.client
returns ClientRef object or error
Note: This or next release duplicate members/methods get deleted from chr (except acctname)
03-17-2010 Turley:
Fixed: Trim: left&right doesnt return empty string if complete string has to be trimmed
03-12-2010 Turley:
Fixed: uoconvert - default value of MaxTileID (0x3FFF)
Added: uoconvert param {maxtileid=0x3FFF/0x7FFF} (if uodata= param is given pol.cfg never gets read)
02-20-2010 Turley:
Changed: ListStaticsInBox,ListObjectsInBox,ListMultisInBox now swap x,y,z values if in wrong order
Added: uo::DistanceEuclidean(obj1, obj2) & uo::CoordinateDistanceEuclidean(x1, y1, x2, y2)
returns the Euclidean distance as double ( sqrt(pow(x1-x2,2)+pow(y1-y2,2)) )
02-18-2010 Turley:
Added: (Tomi) Syshook UnHide(mobile)
return values 0 stops the char from unhiding and 1 let the core process it.
Added: (Tomi) "DisableCoreChecks" 0/1 (default 0) to each attribute entry in attribute.cfg
if true the core will not check during skill_use ( from skillwindow ) for active skills,
active spells, frozen, paralyzed or delay
if false core will check everything as it does now.
Changed: Increased Maximum UO SkillID to 57 (default value of uoclient::MaxSkillID)
02-17-2010 Turley:
Fixed: direct usage of struct/dictionary initializer in array/dictionary/struct definition
eg: var dict:=dictionary; dict["blubb"]:=struct{a:=1};
02-16-2010 Turley:
Fixed: StrReplace,SubStrReplace return "Invalid parameter type" instead of crashing if non string object
is given as to_replace, replace_with
Fixed: Several small memoryleaks
02-04-2010 Turley:
Added: polcfg:DiscardOldEvents 1/0 {default 0}
if set instead of discarding new event if queue is full it discards oldest event and adds the new event
Changed: "Event queue is full.." only prints if polcfg.LogLevel >= 11
02-03-2010 Turley:
Added: MethodScript support for mobiles
NPC: npcdesc.cfg MethodScript entry
Character: uoclient.cfg section "General" MethodScript entry
02-01-2010 Turley:
Added: multi create additionally checks for valid realm coord of the corners
Changed: uotool staticdefrag [britannia] (removed "realm=")
Added: uotool formatdesc [desc] little helper prints singular & plural form of given desc
01-22-2010 Turley:
Added: Speedhack Prevention System
Added: ssopt::SpeedhackPrevention 0/1 (default 0)
Added: chr priv "speedhack" disables Speedhack Prevention for chr
01-15-2010 Turley:
Added: (Tomi) chr priv "runwhilestealth" you can run while you are in stealth for as many stealthsteps you have
Added: (Tomi) new npcdesc entry "SaveOnExit" 0/1 ( defaults to 1 )
Note: this also means that SaveOnExit can be definied in the override_properties struct
Changed: vitals::ApplyDamage( mobile, damage, userepsys := DAMAGE_USE_REPSYS, send_damage := DAMAGE_USE_DEFAULT )
vitals::ApplyRawDamage( character, hits, userepsys := DAMAGE_USE_REPSYS, send_damage := DAMAGE_USE_DEFAULT )
const DAMAGE_NO_SHOW := 0;
const DAMAGE_SHOW := 1;
const DAMAGE_USE_DEFAULT := 2;
DAMAGE_USE_DEFAULT uses the SendDamagePacket setting from combat.cfg (Tomi)
Added: uo::SendOverallSeason( season_id, playsound := 1 )
Used to send the Season packet 0xBC to all clients logged on.
This function doesnt resend the lightlevel or weather after it sends season, that has to be done by scripts.
chr.setseason( season_id, playsound )
Used to send the Season packet 0xBC to a single character.
This method doesnt resend the lightlevel or weather after it sends season, that has to be done by scripts.
(Tomi)
Changed: (Tomi) uo::SpeakPowerWords( who, spellid, font := _DEFAULT_TEXT_FONT, color := _DEFAULT_TEXT_COLOR)
font, color like every speech function
01-14-2010 Turley:
Fixed: (Arkham) ip byteorder for gameserverlist if hostname is given
Changed: (Tomi) gargoyle char create equips 0x1F03 robe
Added: (Tomi) ssopt.NewbieStartingEquipment 1/0 (default 1) to determine if equipped items
created during the character creation should be newbied or not.
Changed: misc/oncreate.src added third param profession
some clients doesnt send skillvalues if profession is given now core doesnt stop char creation,
based on third param you can set the skillvalues in oncreate
Added: more errorchecks to char create, it now checks if hair/beard/face can be equipped (fixes crash with latest OSI
tiledata where facial horn has the same layer as "normal" horn)
Added: Combatcfg:AttackWhileFrozen 1/0 (default 1) if set to false attack checks if chr is frozen or paralyzed
01-12-2010 Turley:
Added: on Profile opening and update request "scripts/misc/charprofile.ecl" is called
params are character, of_who, mode,uctext
if mode==0 (request) uctext is 0
if mode==1 (update) uctext is new unicode array
both modes ignore the return value
- Tomi
Added: uo::SendCharProfile( character, of_who, title, uneditable_text := CHARPROFILE_NO_UNEDITABLE_TEXT, editable_text := CHARPROFILE_NO_EDITABLE_TEXT )
will send the serverside charprofile packet back to client and display it for the player.
uneditable_text & editable_text are unicode arrays
constants are:
const CHARPROFILE_NO_UNEDITABLE_TEXT := array;
const CHARPROFILE_NO_EDITABLE_TEXT := array;
- Tomi
Note: Only a script interface for making a fully working CharProfile without packethooks.
Not a fully working charprofile system controlled by the core, ALL text strings still have to be
stored somewhere by scripts.
01-01-2010 Nando:
Added: (Tomi) New itemdesc property "StackLimit", defines the maximum stack
of that item (lower than 60k). If not defined, will default to 60000.
Note: Happy new year. :)
12-21-2009 Turley:
Fixed: call of built-in method with ._methodname if overridden
Added: Multis now support method script
12-18-2009 Turley:
Added: file::CreateDirectory( dirname )
returns 1 on success else error
("Error in dirname descriptor","No parent path traversal please.",
"Directory already exists.","Could not create directory.")
Added: file::ListDirectory( dirname, extension := LISTDIR_ALL_FILES, listdirs := LISTDIR_DONT_LIST_DIRS )
extension param can be extension without "." or file.em constant
file.em constants:
const LISTDIR_LIST_DIRS := 0x1;
const LISTDIR_DONT_LIST_DIRS := 0x0;
const LISTDIR_NO_FILES := "";
const LISTDIR_ALL_FILES := "*";
returns array of strings or error
("Error in dirname descriptor","No parent path traversal please.","Directory not found.")
Note: Both functions doesnt check file access rights
12-17-2009 Turley:
Added: uo::CloseWindow( character, type, object ) - Tomi
possible values for type
const CLOSE_PAPERDOLL := 1;
const CLOSE_STATUS := 2;
const CLOSE_PROFILE := 8;
const CLOSE_CONTAINER := 12;
Note: if ( type == CLOSE_CONTAINER ) object has to be a ContainerRef, to close the open container gump.
else object has to be a MobRef to close paperdoll, status or profile of the chosen mob.
12-16-2009 Turley:
Added: Encrypted Client support - Tomi
Changed: uoclient.cfg Listener::Encryption and pol.cfg ClientEncryptionVersion now support
ignition = uorice = none, 2.0.0x and due to autocalculation major.minor.build (no patch)
e.g. 7.0.4 for latest client 7.0.4.1
default for both is "none"
Note: Till OSI changes the encryption type pol now supports every encrypted client without
updating the core (last change was 2.0.4)
12-04-2009 Turley:
Removed: deprecated pol.cfg entries "MasterKey1","MasterKey2","ClientVersion","KeyFile" - Tomi
Added: Gargoyles count as mounted while flying
12-03-2009 Turley:
Added: basic gargoyle flying support (new movemode "F")
Fixed: poison status for newer clients
Note: gargoyles can "fly" on tiles with tiledata flag HOVEROVER (MAPDATA_FLAG_OVERFLIGHT)
rebuilding of all realms is required
currently flymode can only be activated clientside (0xBF:0x32) and if race=RACE_GARGOYLE
renamed uo:TILEDATA_FLAG_NODIAGONAL to uo:TILEDATA_FLAG_HOVEROVER
12-02-2009 Turley:
Added: 0xF3 packet is send instead of 0x1A for clients >= 7 or UO:SA clients - Tomi
Added: polcfg MaxTileID 0x3FFF / 0x7FFF (default 0x3FFF)
since client 7.0.0.0 item graphic can be definied up to 0x7FFF - Tomi
Added: "SA" for expansion type. This includes sending 0x187DF with packet 0xB9. - Tomi
Added: support of new map TerMur - Tomi
Note: uoconvert param:
realm=termur mapid=5 width=1280 height=4096
uoconvert.cfg new stairs since SA:
0x1de0 0x1de1 0x1de2 0x1de3 0x1de4 0x1de5 0x1de6 0x1de7 0x1de8 0x1de9 0x1dea 0x1deb
Added: Gargoyle support (race = uo:RACE_GARGOYLE)
Note: graphics are:
UOBJ_GARGOYLE_MALE 0x029A
UOBJ_GARGOYLE_FEMALE 0x029B
UOBJ_GARGOYLE_MALE_GHOST 0x02B6
UOBJ_GARGOYLE_FEMALE_GHOST 0x02B7
Added: support of UO:KR/SA char create packet 0x8D
Added: new gargoyle hair & beard 0x4258-0x425F & 0x42AD-0x42B0
Added: UO:KR/SA face support
Added: ssopt.SupportFaces 0/1/2 (default 0)
set it to 1 to support basic faces
set it to 2 to support roleplay faces (sets 0x2000 flag in 0xB9 packet)
Note: Faces are normal items (like hair/beard) with layer 15, objtype 0x3B44-0x3B57
roleplay faces 0x3B4E-0x3B57
11-30-2009 Turley:
Added: polsys::MD5Encrypt(str) returns MD5 hash string.
Fixed: RecalcVitals function for vital changes doesnt check if maximum value changed
11-26-2009 Turley:
Added: Syshook CanDie(mobile)
Called when the mobile is about to die, return 0 to stop death.
11-24-2009 Turley:
Fixed: missing realm check for ListenPoints
11-23-2009 Turley:
Added: uotool param staticdefrag [realm=britannia] to defrag/remove duplicate statics (like fiddler does)
11-20-2009 Turley:
Changed: RecalcVitals( character, calc_attribute := RECALC_INTRINSIC_MOD, calc_vital := RECALC_VITALS )
const RECALC_INTRINSIC_MOD := 1;
const RECALC_NO_INTRINSIC_MOD := 0;
const RECALC_VITALS := 1;
const RECALC_NO_VITALS := 0;
possible values for calc_attribute:
RECALC_INTRINSIC_MOD - calls for every attribute the GetIntrinsicModFunction (old behaviour)
RECALC_NO_INTRINSIC_MOD - skips the GetIntrinsicModFunction calls
attribute name string - only calls the GetIntrinsicModFunction for given attribute
possible values for calc_vital:
RECALC_VITALS - calls for every vital the RegenRateFunction & MaximumFunction (old behaviour)
RECALC_NO_VITALS - skips the RegenRateFunction & MaximumFunction calls
vital name string - only calls the RegenRateFunction & MaximumFunction for given vital
- based on Tomi
11-19-2009 Turley:
Changed: chr.setlightlevel() now supports endless duration (-1) return is the new gameclock value - Tomi
Added: [paralyzed] & [deafened] @ singleclick packet - Tomi
Added: ServSpecOpt CoreSendsSeason 1/0 (default 1)
Determines if the core should send season packet on char creation/logon/reconnect and realm
change based on the season entry in realm.cfg. - Tomi
Removed: "You cannot insert that item into the container." sysmsg after container CanInsert script
returns 0 - Tomi
Changed: uo::UpdateMobile(who, flags:=UPDATEMOBILE_UPDATE)
const UPDATEMOBILE_RECREATE := 1;
const UPDATEMOBILE_UPDATE := 0;
if flags is UPDATEMOBILE_UPDATE old behaviour it sends update Mobile packet 0x77,
if set to UPDATEMOBILE_RECREATE it sends recreate packet 0x78 - Tomi
Added: ServSpecOpt CoreHandledTags (default 0xffff)
bitfield to determine which tags are displayed on singleclick, current used bits are:
0x1 [title_guild]
0x2 [frozen]
0x4 [paralyzed]
0x8 [squelched]
0x10 [deafened]
11-17-2009 Turley:
Fixed: possible hang in party system
remove object packet send when container is on a character
several movement code bugs
11-16-2009 Turley:
Added: NPCs receive EnteredArea event on char resurrect
11-11-2009 Turley:
Changed: intern container MaxItems too highest possible value (packet size) its now 3200
Changed: container "can add"-functions to only check weight recursive
10-22-2009 Turley:
Added: Syshook Ouch(mobile,lastx,lasty,lastz)
Called if mobile falls atleast 22 down (fixed Clientside value)
Added: uo::CanWalk(movemode, x1, y1, z1, x2_or_dir, y2 := CANWALK_DIR, realm := _DEFAULT_REALM)
const CANWALK_DIR := -1;
movemode is mobile.movemode string
if y2 is CANWALK_DIR x2 is considered as direction (0-7)
if x2 and y2 is given it calculates the needed direction
returns new z value or error
10-17-2009 Turley:
Added: PrivUpdater for "invul","seeghosts","seehidden" and "seeinvisitems" updates/sends/removes objects
in visual range on enable/disable - Tomi
Changed: .startlog/.stoplog checks now if priv "plogany" is enabled instead of only given - Tomi
Fixed: priv "all" now works as expected if enabled every other priv is also enabled
10-14-2009 MuadDib:
Changed: Methods Char.Squelch() and Char.Deaf() return the gameclock value they are in effect until.
10-14-2009 Turley:
Added: char privilege "canbeheardasghost"
With this privilege everybody can hear you even as a ghost (no 'oO' replacement) - Tomi
Added: pol.cfg TimestampEveryLine 1/0 (default 0) if set every line in pol.log gets timestamp
Added: char.deaf(duration) - duration in seconds. -1=forever, 0=off
Added: char.deafened r/o
10-12-2009 Turley:
Changed: Method/Syshook definitions now supports :pkg: format - Tomi
Added: ServSpecOpt SpeechRange default 12
ServSpecOpt WhisperRange default 2
ServSpecOpt YellRange default 25
- Tomi
10-10-2009 Turley:
Added: new Spellbook methods
book.removespell(id) removes given spellid returns 1/0
book.addspell(id) adds given spellid returns 1/0
10-09-2009 Turley:
Added: new Spellbook methods
book.spells() returns Array of SpellIDs
book.hasspell(id) checks if SpellID is inside the spellbook returns 1/0
10-07-2009 Turley:
Fixed: DestroyItem call inside CanInsert scripts
10-03-2009 MuadDib:
Added: SysHook::CanDecay(item). Return 0, core decay will ignore item and continue on the cycler. If it
returns 1, core decay will handle the item as normal. - Patch submitted by Tomi
Fixed: Useage of plural forms for more than 1 word in the itemdesc desc entry. - Patch by Tomi
09-22-2009 Turley:
Added: Combatcfg:SendDamagePacket 1/0 default 0 if set sends packet 0xB (0xBF sub 0x22 for clients<4.0.7a)
to attacker(ScriptController) and defender on ApplyDamage and ApplyRawDamage
Added: new param to ApplyDamage & ApplyDamage they are now:
ApplyDamage( mobile, damage, userepsys := DAMAGE_USE_REPSYS );
ApplyRawDamage( character, hits, userepsys := DAMAGE_USE_REPSYS );
const DAMAGE_USE_REPSYS := 1;
const DAMAGE_NO_REPSYS := 0;
If userepsys is set to DAMAGE_NO_REPSYS repsys system isnt called (on_attack & on_damage)
09-22-2009 MuadDib:
Changed: NPC/Char ar/ar_mod internal handling rewrote.
Fixed: NPC Elemental Resist/Damage storage issues.
Fixed: Lightlevel resetting in client during Login.
09-20-2009 MuadDib:
Changed: Spell casting no longer unhides. Be sure to update your scripts to unhide.
Changed: SpeakPowerWords() will now check if mob is hidden. If so, it uses Private Say Above.
09-18-2009 MuadDib:
Added: Multi Walk On Script support. Works for player and npc. Just add Walkon itemdesc entry to the house.
Note: This is in early stages. While it is working, not all cases may register and deregister where a mob
gets put onto or removed from a house. If you find cases that do, report to bugtracker.
Removed: Storing scrolls inside spellbooks. Destroyed after insert is complete.
Changed: Pre-AOS Clients still get the same packet they always did when opening a spellbook, built entirely
off the bitflag system for newer spellbooks. So no more keeping scrolls inside of books. :D
Note: As spellbooks are loaded for the first time with newer cores and as added to books, scrolls are
marked SaveOnExit 0. Newly inserted scrolls from then on, are destroyed during insertion after spell
contents are updated on the book.
09-16-2009 Turley:
Removed: char.isUOKR
Added: char.ClientType r/o bitfield
Note: current Flags are:
CLIENTTYPE_4000 = 0x1, // 4.0.0a (new spellbookcontent packet 0xbf:0x1b)
CLIENTTYPE_4070 = 0x2, // 4.0.7a (new damage packet 0x0b instead of 0xbf:0x22)
CLIENTTYPE_5000 = 0x4, // 5.0.0a (compressed gumps)
CLIENTTYPE_5020 = 0x8, // 5.0.2a (Buff/Debuff 0xdf)
CLIENTTYPE_6017 = 0x10, // 6.0.1.7 (Grid locs)
CLIENTTYPE_60142 = 0x20, // 6.0.14.2 (feature enable 0xb9 size change)
CLIENTTYPE_UOKR = 0x40,
CLIENTTYPE_7000 = 0x80, // 7.0.0.0 (Gargoyle race)
CLIENTTYPE_UOSA = 0x100
Note: Pol will be now compiled with flag /LARGEADDRESSAWARE (win only flag) pol should now be able to consume more memory
09-14-2009 MuadDib:
Removed: All import abilities built in to core for UOX data files. O_O
Note: The file "import.txt" will be loaded each time POL loads, when found in the world data directory. This file's
format is the same as, for example, the ITEMS.TXT file POL saves. You can use this for example, to store all your
doors, decorations, etc, to ensure they are reloaded after a wipe, or loaded every time POL starts. These items
are added to the real world, and saved to items.txt. However, if on load the same objtype is found at the same
x y z as the item in IMPORT.TXT, it destroys that item, and loads the import one.
09-10-2009 Turley: