summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--DTUtility.c23
1 files changed, 20 insertions, 3 deletions
diff --git a/DTUtility.c b/DTUtility.c
index 7312ee9..5d09614 100644
--- a/DTUtility.c
+++ b/DTUtility.c
@@ -850,11 +850,28 @@ global func GetPlayerByID(int id)
return NO_OWNER;
}
-global func Extend(map base, map extension)
+global func Extend(map base, map extension, bool recursive)
{
- for(var key, value in extension)
+ if(recursive)
{
- base[key] = value;
+ for(var key, value in extension)
+ {
+ if(GetType(base[key]) == C4V_Map && GetType(value) == C4V_Map)
+ {
+ base[key] = Extend(base[key], value, true);
+ }
+ else
+ {
+ base[key] = value;
+ }
+ }
+ }
+ else
+ {
+ for(var key, value in extension)
+ {
+ base[key] = value;
+ }
}
return base;
}