1 | /* |
1 | /* |
2 | * This file is part of Deliantra, the Roguelike Realtime MMORPG. |
2 | * This file is part of Deliantra, the Roguelike Realtime MMORPG. |
3 | * |
3 | * |
4 | * Copyright (©) 2005,2006,2007,2008,2009,2010,2011 Marc Alexander Lehmann / Robin Redeker / the Deliantra team |
4 | * Copyright (©) 2005,2006,2007,2008,2009,2010,2011,2012 Marc Alexander Lehmann / Robin Redeker / the Deliantra team |
5 | * Copyright (©) 2001 Mark Wedel & Crossfire Development Team |
5 | * Copyright (©) 2001 Mark Wedel & Crossfire Development Team |
6 | * Copyright (©) 1992 Frank Tore Johansen |
6 | * Copyright (©) 1992 Frank Tore Johansen |
7 | * |
7 | * |
8 | * Deliantra is free software: you can redistribute it and/or modify it under |
8 | * Deliantra is free software: you can redistribute it and/or modify it under |
9 | * the terms of the Affero GNU General Public License as published by the |
9 | * the terms of the Affero GNU General Public License as published by the |
… | |
… | |
1004 | li->count = count; |
1004 | li->count = count; |
1005 | |
1005 | |
1006 | freelist = li; |
1006 | freelist = li; |
1007 | ++free_count; |
1007 | ++free_count; |
1008 | } |
1008 | } |
1009 | |
|
|
1010 | static struct freed_map : maptile |
|
|
1011 | { |
|
|
1012 | freed_map () |
|
|
1013 | : maptile (3, 3) |
|
|
1014 | { |
|
|
1015 | path = "<freed objects map>"; |
|
|
1016 | name = "/internal/freed_objects_map"; |
|
|
1017 | no_drop = 1; |
|
|
1018 | no_reset = 1; |
|
|
1019 | |
|
|
1020 | state = MAP_ACTIVE; |
|
|
1021 | } |
|
|
1022 | |
|
|
1023 | ~freed_map () |
|
|
1024 | { |
|
|
1025 | destroy (); |
|
|
1026 | } |
|
|
1027 | } freed_map; // freed objects are moved here to avoid crashes |
|
|
1028 | |
1009 | |
1029 | void |
1010 | void |
1030 | object::do_destroy () |
1011 | object::do_destroy () |
1031 | { |
1012 | { |
1032 | if (flag [FLAG_IS_LINKED]) |
1013 | if (flag [FLAG_IS_LINKED]) |