Changeset bed664f93253d22a033cf37799f8f79ef26bbcec
- Timestamp:
- 07/10/07 18:34:20 (1 year ago)
- git-parent:
- Files:
-
- db/tables/ship_types.sql (modified) (2 diffs)
- db/tables/ships_baubar.sql (modified) (3 diffs)
- db/tables/ships_modules.sql (modified) (1 diff)
- db/updates.xml (modified) (1 diff)
- src/net/driftingsouls/ds2/server/AdminCommands.java (modified) (1 diff)
- src/net/driftingsouls/ds2/server/config/IEDraftShip.java (modified) (3 diffs)
- src/net/driftingsouls/ds2/server/modules/ItemInfoController.java (modified) (2 diffs)
- src/net/driftingsouls/ds2/server/modules/KapernController.java (modified) (1 diff)
- src/net/driftingsouls/ds2/server/modules/SchiffController.java (modified) (1 diff)
- src/net/driftingsouls/ds2/server/modules/SchiffInfoController.java (modified) (15 diffs)
- src/net/driftingsouls/ds2/server/modules/SchiffeController.java (modified) (1 diff)
- src/net/driftingsouls/ds2/server/modules/admin/AddShips.java (modified) (1 diff)
- src/net/driftingsouls/ds2/server/modules/ks/KSKapernAction.java (modified) (2 diffs)
- src/net/driftingsouls/ds2/server/modules/schiffplugins/SensorsDefault.java (modified) (1 diff)
- src/net/driftingsouls/ds2/server/ships/AbstractShipTypeDataWrapper.java (modified) (1 diff)
- src/net/driftingsouls/ds2/server/ships/ShipBaubar.java (modified) (5 diffs)
- src/net/driftingsouls/ds2/server/ships/ShipModules.java (modified) (3 diffs)
- src/net/driftingsouls/ds2/server/ships/ShipType.java (modified) (2 diffs)
- src/net/driftingsouls/ds2/server/ships/ShipTypeChangeset.java (modified) (4 diffs)
- src/net/driftingsouls/ds2/server/ships/ShipTypeData.java (modified) (1 diff)
- src/net/driftingsouls/ds2/server/tick/regular/NPCOrderTick.java (modified) (1 diff)
- src/net/driftingsouls/ds2/server/tick/regular/RTCTick.java (modified) (2 diffs)
- src/net/driftingsouls/ds2/server/werften/BaseWerft.java (modified) (1 diff)
- src/net/driftingsouls/ds2/server/werften/ShipWerft.java (modified) (1 diff)
- src/net/driftingsouls/ds2/server/werften/WerftObject.java (modified) (11 diffs)
- templates/schiffinfo.html (modified) (2 diffs)
- web/WEB-INF/cfg/items.xml (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
db/tables/ship_types.sql
r2fdcc39 rbed664f 29 29 `flags` text NOT NULL, 30 30 `groupwrap` tinyint(3) unsigned NOT NULL default '10', 31 `werft` varchar(16) NOT NULL default '',31 `werft` int(11) NOT NULL default '0', 32 32 `ow_werft` smallint(5) unsigned NOT NULL default '0', 33 33 `chance4Loot` tinyint(3) unsigned NOT NULL default '0', … … 56 56 INSERT INTO `ship_types` (`id`, `nickname`, `picture`, `ru`, `rd`, `ra`, `rm`, `eps`, `cost`, `hull`, `panzerung`, `cargo`, `heat`, `crew`, `weapons`, `maxheat`, `torpedodef`, `shields`, `size`, `jdocks`, `adocks`, `sensorrange`, `hydro`, `recost`, `descrip`, `deutfactor`, `class`, `flags`, `groupwrap`, `werft`, `ow_werft`, `chance4Loot`, `modules`, `shipcount`, `hide`) VALUES (30, 'Anuket', 'data/schiffe/gvt_anuket.png', 0, 6, 0, 12, 50, 2, 4000, 1, 580, 2, 30, '', '', 0, 0, 6, 0, 0, 1, 0, 0, 'Deuterium, das Rohmaterial f¨r Plastik und der Brennstoff f¨r Fusionsreaktoren aller Art, kommt nicht auf Asteroiden vor.\r\nDie Anuket, der vasudanische Tanker, ist etwas behäbiger als das Terranische Gegenst¨ck, hat jedoch mehr Frachtraum.\r\n', 3, 3, '', 10, '', 0, 0, '1:misctanker', 1, 0); 57 57 INSERT INTO `ship_types` (`id`, `nickname`, `picture`, `ru`, `rd`, `ra`, `rm`, `eps`, `cost`, `hull`, `panzerung`, `cargo`, `heat`, `crew`, `weapons`, `maxheat`, `torpedodef`, `shields`, `size`, `jdocks`, `adocks`, `sensorrange`, `hydro`, `recost`, `descrip`, `deutfactor`, `class`, `flags`, `groupwrap`, `werft`, `ow_werft`, `chance4Loot`, `modules`, `shipcount`, `hide`) VALUES (31, 'Ma at', 'data/schiffe/gcp/gvfr_maat.png', 8, 0, 0, 24, 80, 2, 8500, 4, 1000, 4, 30, 'Subach_HL-7=1|Terran_Turret=3', 'Subach_HL-7=5|Terran_Turret=15', 0, 0, 6, 0, 2, 1, 0, 0, 'Die Ma''at war während des Großen Krieges der Standard-Transporter der jetztigen Vasudaner. Seine 4 Laserkanonen konnten frechen einzelgängerischen GTA-Jäger abwehren, jedoch waren die Ma''at gegen eine Vierer-Staffel machtlos.\r\nAuch heute setzen die Vasudaner die Ma''at als billiges bewaffnetes Transportschiff ein.\r\n\r\nJedes angedockte Objekt erhöht die Flugkosten des Schiffes um 1.', 0, 1, '', 10, '', 0, 0, '1:misc', 1, 0); 58 INSERT INTO `ship_types` (`id`, `nickname`, `picture`, `ru`, `rd`, `ra`, `rm`, `eps`, `cost`, `hull`, `panzerung`, `cargo`, `heat`, `crew`, `weapons`, `maxheat`, `torpedodef`, `shields`, `size`, `jdocks`, `adocks`, `sensorrange`, `hydro`, `recost`, `descrip`, `deutfactor`, `class`, `flags`, `groupwrap`, `werft`, `ow_werft`, `chance4Loot`, `modules`, `shipcount`, `hide`) VALUES (33, 'GTI Ganymede', 'data/schiffe/gcp/gti_ganymede.png', 0, 5, 20, 80, 1200, 0, 90000, 14, 15000, 0, 2500, '', '', 0, 0, 9, 0, 0, 1, 0, 0, 'Die Ganymede ist die Standardwerftanlage des GCP. Sie ist weit verbreitet und in der Lage jedwedes Schiff, vom Jäger bis zum Zerstörer zu bauen und zu reparieren. Eine starke Hülle schützt die ansonsten unbewaffnete Installation, die unbedingt geschützt werden sollte.\r\n', 0, 8, 'zerstoererpanzerung secondrow', 10, 'ganymed', 0, 0, '1:misc;2:misc;3:misc_ganystation;4:misc_ganystation;5:weapon_ganystation;6:weapon_ganystation', 1, 0);59 INSERT INTO `ship_types` (`id`, `nickname`, `picture`, `ru`, `rd`, `ra`, `rm`, `eps`, `cost`, `hull`, `panzerung`, `cargo`, `heat`, `crew`, `weapons`, `maxheat`, `torpedodef`, `shields`, `size`, `jdocks`, `adocks`, `sensorrange`, `hydro`, `recost`, `descrip`, `deutfactor`, `class`, `flags`, `groupwrap`, `werft`, `ow_werft`, `chance4Loot`, `modules`, `shipcount`, `hide`) VALUES (35, 'Flottentender Pyros', 'data/schiffe/pyros.png', 0, 10, 15, 40, 400, 2, 20000, 8, 8200, 4, 250, 'heavy_flak=4|AAAf=4|raketen=2', 'heavy_flak=20|AAAf=20|raketen=20', 0, 0, 14, 2, 3, 1, 0, 0, 'Das Flottenversorgungsschiff Pyros ist eine Neuentwicklung, die Elemente der Tritonfrachter, der Nautilusgroßraumtransporter und der Modularen Kompaktwerftanlagen vereint. Ein großer Frachtraum, 3 externe Dockinganlagen für Container und Sperrgeschütze sowie 2 Jägerhangars sowie die Fähigkeit beschädigte Schiffe im Feld zu reparieren, machen dieses Schiff zu einem der beliebtesten in den Lost Lands.\r\n\r\nJedes angedockte Objekt erhöht die Flugkosten des Schiffes um 1.', 0, 1, '', 10, 'pwerft', 0, 0, '1:misc;2:misc;3:misc_large_weapon;4:misc_large_weapon;5:misc_large_weapon;6:misc_large_weapon;7:misc_large;8:misc_large;9:misc_shipyard', 1, 0);58 INSERT INTO `ship_types` (`id`, `nickname`, `picture`, `ru`, `rd`, `ra`, `rm`, `eps`, `cost`, `hull`, `panzerung`, `cargo`, `heat`, `crew`, `weapons`, `maxheat`, `torpedodef`, `shields`, `size`, `jdocks`, `adocks`, `sensorrange`, `hydro`, `recost`, `descrip`, `deutfactor`, `class`, `flags`, `groupwrap`, `werft`, `ow_werft`, `chance4Loot`, `modules`, `shipcount`, `hide`) VALUES (33, 'GTI Ganymede', 'data/schiffe/gcp/gti_ganymede.png', 0, 5, 20, 80, 1200, 0, 90000, 14, 15000, 0, 2500, '', '', 0, 0, 9, 0, 0, 1, 0, 0, 'Die Ganymede ist die Standardwerftanlage des GCP. Sie ist weit verbreitet und in der Lage jedwedes Schiff, vom Jäger bis zum Zerstörer zu bauen und zu reparieren. Eine starke Hülle schützt die ansonsten unbewaffnete Installation, die unbedingt geschützt werden sollte.\r\n', 0, 8, 'zerstoererpanzerung secondrow', 10, 12, 0, 0, '1:misc;2:misc;3:misc_ganystation;4:misc_ganystation;5:weapon_ganystation;6:weapon_ganystation', 1, 0); 59 INSERT INTO `ship_types` (`id`, `nickname`, `picture`, `ru`, `rd`, `ra`, `rm`, `eps`, `cost`, `hull`, `panzerung`, `cargo`, `heat`, `crew`, `weapons`, `maxheat`, `torpedodef`, `shields`, `size`, `jdocks`, `adocks`, `sensorrange`, `hydro`, `recost`, `descrip`, `deutfactor`, `class`, `flags`, `groupwrap`, `werft`, `ow_werft`, `chance4Loot`, `modules`, `shipcount`, `hide`) VALUES (35, 'Flottentender Pyros', 'data/schiffe/pyros.png', 0, 10, 15, 40, 400, 2, 20000, 8, 8200, 4, 250, 'heavy_flak=4|AAAf=4|raketen=2', 'heavy_flak=20|AAAf=20|raketen=20', 0, 0, 14, 2, 3, 1, 0, 0, 'Das Flottenversorgungsschiff Pyros ist eine Neuentwicklung, die Elemente der Tritonfrachter, der Nautilusgroßraumtransporter und der Modularen Kompaktwerftanlagen vereint. Ein großer Frachtraum, 3 externe Dockinganlagen für Container und Sperrgeschütze sowie 2 Jägerhangars sowie die Fähigkeit beschädigte Schiffe im Feld zu reparieren, machen dieses Schiff zu einem der beliebtesten in den Lost Lands.\r\n\r\nJedes angedockte Objekt erhöht die Flugkosten des Schiffes um 1.', 0, 1, '', 10, 4, 0, 0, '1:misc;2:misc;3:misc_large_weapon;4:misc_large_weapon;5:misc_large_weapon;6:misc_large_weapon;7:misc_large;8:misc_large;9:misc_shipyard', 1, 0); 60 60 INSERT INTO `ship_types` (`id`, `nickname`, `picture`, `ru`, `rd`, `ra`, `rm`, `eps`, `cost`, `hull`, `panzerung`, `cargo`, `heat`, `crew`, `weapons`, `maxheat`, `torpedodef`, `shields`, `size`, `jdocks`, `adocks`, `sensorrange`, `hydro`, `recost`, `descrip`, `deutfactor`, `class`, `flags`, `groupwrap`, `werft`, `ow_werft`, `chance4Loot`, `modules`, `shipcount`, `hide`) VALUES (37, 'Rahu', 'data/schiffe/shivaner/st_rahu.png', 0, 8, 0, 20, 80, 2, 15000, 2, 450, 5, 30, 'Shivan_Heavy_Laser=3', 'Shivan_Heavy_Laser=15', 0, 0, 6, 0, 0, 0, 0, 0, 'Auch die Shivaner benötigen Nachschub.\r\nDie Rahu entsprechen den Tankern, sind aber, wie jedes shivanische Schiff bewaffnet und hochaggressiv. Die Bewaffnung schlÀgt sich jedoch auf den Laderaum nieder.\r\n', 3, 3, 'jumpdrive_shivan', 10, '', 0, 0, '1:misctanker', 1, 0); 61 61 INSERT INTO `ship_types` (`id`, `nickname`, `picture`, `ru`, `rd`, `ra`, `rm`, `eps`, `cost`, `hull`, `panzerung`, `cargo`, `heat`, `crew`, `weapons`, `maxheat`, `torpedodef`, `shields`, `size`, `jdocks`, `adocks`, `sensorrange`, `hydro`, `recost`, `descrip`, `deutfactor`, `class`, `flags`, `groupwrap`, `werft`, `ow_werft`, `chance4Loot`, `modules`, `shipcount`, `hide`) VALUES (44, 'Charybdis', 'data/schiffe/gts_charybdis.png', 3, 9, 0, 75, 120, 2, 10000, 2, 300, 3, 400, 'standard_flak=2', 'standard_flak=10', 0, 0, 7, 0, 0, 8, 0, 0, 'Die GTA Charybdis ist mit modernsten Tachyon-AWACS-Sensoren ausgestattet, die eine Langstreckenaufklärung ohnegleichen ermöglichen. Charybdis sind jedoch nut schlecht gepanzert und bis auf zwei Flakgeschütze unbewaffnet, so daß sie nie unbewacht fliegen sollten. Auch eine Aufklärung von Nebeln erwies sich als unmöglich, wie schon die Untersuchung im Nebel hinter dem Knoßosportal bewies.', 0, 13, 'srs_awac', 10, '', 0, 0, '1:misc', 1, 0); db/tables/ships_baubar.sql
rcdc78a7 rbed664f 3 3 `type` int(11) NOT NULL default '0', 4 4 `costs` varchar(100) NOT NULL default '0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,', 5 `linfactor` float NOT NULL default '0',6 5 `crew` smallint(6) NOT NULL default '0', 7 6 `dauer` tinyint(4) NOT NULL default '0', … … 12 11 `tr2` int(11) NOT NULL default '0', 13 12 `tr3` int(11) NOT NULL default '0', 14 `werft req` tinytext NOT NULL,13 `werftslots` int(11) NOT NULL default '1', 15 14 `flagschiff` tinyint(1) NOT NULL default '0', 16 15 PRIMARY KEY (`id`) … … 19 18 ALTER TABLE ships_baubar ADD CONSTRAINT ships_baubar_type_fk FOREIGN KEY (type) REFERENCES ship_types(id); 20 19 21 INSERT INTO `ships_baubar` (`id`, `type`, `costs`, `linfactor`, `crew`, `dauer`, `ekosten`, `race`, `systemreq`, `tr1`, `tr2`, `tr3`, `werftreq`, `flagschiff`) VALUES (5, 12, '0,0,276,189,0,0,0,36,12,0,0,4,0,0,0,0,0,0,0', 0, 20, 9, 78, 2, 1, 7, 0, 0, 'pwerft ganymed', 0);22 INSERT INTO `ships_baubar` (`id`, `type`, `costs`, `linfactor`, `crew`, `dauer`, `ekosten`, `race`, `systemreq`, `tr1`, `tr2`, `tr3`, `werftreq`, `flagschiff`) VALUES (6, 2, '0,0,175,135,0,0,25,52,17,0,0,0,0,0,0,0,0,0,0', 0, 10, 6, 87, 1, 0, 1, 0, 0, 'pwerft ganymed', 0);23 INSERT INTO `ships_baubar` (`id`, `type`, `costs`, `linfactor`, `crew`, `dauer`, `ekosten`, `race`, `systemreq`, `tr1`, `tr2`, `tr3`, `werftreq`, `flagschiff`) VALUES (13, 13, '0,0,37,56,0,0,3,26,19,0,0,0,0,0,0,0,0,0,0', 0, 0, 2, 46, 1, 1, 12, 0, 0, 'pwerft ganymed', 0);24 INSERT INTO `ships_baubar` (`id`, `type`, `costs`, `linfactor`, `crew`, `dauer`, `ekosten`, `race`, `systemreq`, `tr1`, `tr2`, `tr3`, `werftreq`, `flagschiff`) VALUES (14, 28, '0,0,27,23,0,0,4,28,4,0,0,0,0,0,0,0,0,0,0', 0, 0, 1, 22, 1, 0, 32, 0, 0, 'pwerft ganymed', 0);25 INSERT INTO `ships_baubar` (`id`, `type`, `costs`, `linfactor`, `crew`, `dauer`, `ekosten`, `race`, `systemreq`, `tr1`, `tr2`, `tr3`, `werftreq`, `flagschiff`) VALUES (15, 29, '0,0,25,21,0,0,3,38,4,0,0,0,0,0,0,0,0,0,0', 0, 0, 1, 26, 2, 0, 32, 0, 0, 'pwerft ganymed', 0);26 INSERT INTO `ships_baubar` (`id`, `type`, `costs`, `linfactor`, `crew`, `dauer`, `ekosten`, `race`, `systemreq`, `tr1`, `tr2`, `tr3`, `werftreq`, `flagschiff`) VALUES (16, 30, '0,0,185,125,0,0,30,72,21,0,0,0,0,0,0,0,0,0,0', 0, 10, 6, 93, 2, 0, 1, 0, 0, 'pwerft ganymed', 0);27 INSERT INTO `ships_baubar` (`id`, `type`, `costs`, `linfactor`, `crew`, `dauer`, `ekosten`, `race`, `systemreq`, `tr1`, `tr2`, `tr3`, `werftreq`, `flagschiff`) VALUES (23, 5, '0,0,738,566,0,0,702,264,378,298,0,68,0,0,0,0,0,0,0', 0, 140, 34, 389, 1, 1, 23, 31, 29, 'ganymed', 0);28 INSERT INTO `ships_baubar` (`id`, `type`, `costs`, `linfactor`, `crew`, `dauer`, `ekosten`, `race`, `systemreq`, `tr1`, `tr2`, `tr3`, `werftreq`, `flagschiff`) VALUES (25, 8, '0,0,694,578,0,0,304,134,70,134,0,16,0,0,0,0,0,0,0', 0, 30, 16, 371, 1, 1, 34, 0, 0, 'ganymed', 0);29 INSERT INTO `ships_baubar` (`id`, `type`, `costs`, `linfactor`, `crew`, `dauer`, `ekosten`, `race`, `systemreq`, `tr1`, `tr2`, `tr3`, `werftreq`, `flagschiff`) VALUES (28, 44, '0,0,192,56,0,0,112,278,198,58,0,4,0,0,0,0,0,0,0', 0, 20, 9, 387, 1, 0, 30, 10, 23, 'pwerft ganymed', 0);30 INSERT INTO `ships_baubar` (`id`, `type`, `costs`, `linfactor`, `crew`, `dauer`, `ekosten`, `race`, `systemreq`, `tr1`, `tr2`, `tr3`, `werftreq`, `flagschiff`) VALUES (30, 33, '0,0,1000,2000,0,0,1000,1000,500,800,0,30,0,0,0,0,0,0,0', 0.5, 120, 120, 700, 0, 0, 33, 0, 0, 'pwerft ganymed', 0);31 INSERT INTO `ships_baubar` (`id`, `type`, `costs`, `linfactor`, `crew`, `dauer`, `ekosten`, `race`, `systemreq`, `tr1`, `tr2`, `tr3`, `werftreq`, `flagschiff`) VALUES (31, 14, '0,0,376,448,0,0,388,272,140,392,0,12,0,0,0,0,0,0,0', 0, 5, 10, 212, 0, 1, 19, 0, 0, 'ganymed', 0);32 INSERT INTO `ships_baubar` (`id`, `type`, `costs`, `linfactor`, `crew`, `dauer`, `ekosten`, `race`, `systemreq`, `tr1`, `tr2`, `tr3`, `werftreq`, `flagschiff`) VALUES (33, 51, '0,0,600,1200,0,0,856,1240,456,764,0,85,0,0,0,0,0,0,0', 0, 140, 60, 800, 0, 1, 43, 0, 0, 'ganymed', 0);33 INSERT INTO `ships_baubar` (`id`, `type`, `costs`, `linfactor`, `crew`, `dauer`, `ekosten`, `race`, `systemreq`, `tr1`, `tr2`, `tr3`, `werftreq`, `flagschiff`) VALUES (34, 6, '0,0,930,68,0,0,462,762,822,596,0,68,0,0,0,0,0,0,0', 0, 75, 25, 512, 2, 1, 34, 0, 0, 'ganymed', 0);34 INSERT INTO `ships_baubar` (`id`, `type`, `costs`, `linfactor`, `crew`, `dauer`, `ekosten`, `race`, `systemreq`, `tr1`, `tr2`, `tr3`, `werftreq`, `flagschiff`) VALUES (39, 54, '0,0,100,80,0,0,168,64,48,0,0,8,0,0,0,0,0,0,0', 0, 8, 3, 200, 1, 1, 21, 4, 0, 'pwerft ganymed', 0);35 INSERT INTO `ships_baubar` (`id`, `type`, `costs`, `linfactor`, `crew`, `dauer`, `ekosten`, `race`, `systemreq`, `tr1`, `tr2`, `tr3`, `werftreq`, `flagschiff`) VALUES (42, 9, '0,0,320,200,0,0,50,150,20,250,0,2,0,0,0,0,0,0,0', 0, 10, 12, 150, 0, 0, 36, 63, 0, 'pwerft ganymed', 0);36 INSERT INTO `ships_baubar` (`id`, `type`, `costs`, `linfactor`, `crew`, `dauer`, `ekosten`, `race`, `systemreq`, `tr1`, `tr2`, `tr3`, `werftreq`, `flagschiff`) VALUES (48, 1, '0,0,2567,2540,0,0,3450,1100,1240,2890,0,395,0,0,0,0,0,0,0', 0, 280, 110, 1150, 1, 1, 65, 0, 0, 'ganymed', 1);37 INSERT INTO `ships_baubar` (`id`, `type`, `costs`, `linfactor`, `crew`, `dauer`, `ekosten`, `race`, `systemreq`, `tr1`, `tr2`, `tr3`, `werftreq`, `flagschiff`) VALUES (49, 7, '0,0,2890,2358,0,0,3600,1400,1200,2980,0,400,0,0,0,0,0,0,0', 0, 250, 110, 1180, 2, 1, 65, 0, 0, 'ganymed', 1);38 INSERT INTO `ships_baubar` (`id`, `type`, `costs`, `linfactor`, `crew`, `dauer`, `ekosten`, `race`, `systemreq`, `tr1`, `tr2`, `tr3`, `werftreq`, `flagschiff`) VALUES (57, 56, '0,0,144,80,0,0,12,84,92,0,0,4,0,0,0,0,0,0,0', 0, 4, 2, 208, 1, 1, 15, 0, 0, 'pwerft ganymed', 0);20 INSERT INTO `ships_baubar` (`id`, `type`, `costs`, `linfactor`, `crew`, `dauer`, `ekosten`, `race`, `systemreq`, `tr1`, `tr2`, `tr3`, `werftreq`, `flagschiff`) VALUES (5, 12, '0,0,276,189,0,0,0,36,12,0,0,4,0,0,0,0,0,0,0', 20, 9, 78, 2, 1, 7, 0, 0, 6, 0); 21 INSERT INTO `ships_baubar` (`id`, `type`, `costs`, `linfactor`, `crew`, `dauer`, `ekosten`, `race`, `systemreq`, `tr1`, `tr2`, `tr3`, `werftreq`, `flagschiff`) VALUES (6, 2, '0,0,175,135,0,0,25,52,17,0,0,0,0,0,0,0,0,0,0', 10, 6, 87, 1, 0, 1, 0, 0, 4, 0); 22 INSERT INTO `ships_baubar` (`id`, `type`, `costs`, `linfactor`, `crew`, `dauer`, `ekosten`, `race`, `systemreq`, `tr1`, `tr2`, `tr3`, `werftreq`, `flagschiff`) VALUES (13, 13, '0,0,37,56,0,0,3,26,19,0,0,0,0,0,0,0,0,0,0', 0, 2, 46, 1, 1, 12, 0, 0, 1, 0); 23 INSERT INTO `ships_baubar` (`id`, `type`, `costs`, `linfactor`, `crew`, `dauer`, `ekosten`, `race`, `systemreq`, `tr1`, `tr2`, `tr3`, `werftreq`, `flagschiff`) VALUES (14, 28, '0,0,27,23,0,0,4,28,4,0,0,0,0,0,0,0,0,0,0', 0, 1, 22, 1, 0, 32, 0, 0, 1, 0); 24 INSERT INTO `ships_baubar` (`id`, `type`, `costs`, `linfactor`, `crew`, `dauer`, `ekosten`, `race`, `systemreq`, `tr1`, `tr2`, `tr3`, `werftreq`, `flagschiff`) VALUES (15, 29, '0,0,25,21,0,0,3,38,4,0,0,0,0,0,0,0,0,0,0', 0, 1, 26, 2, 0, 32, 0, 0, 1, 0); 25 INSERT INTO `ships_baubar` (`id`, `type`, `costs`, `linfactor`, `crew`, `dauer`, `ekosten`, `race`, `systemreq`, `tr1`, `tr2`, `tr3`, `werftreq`, `flagschiff`) VALUES (16, 30, '0,0,185,125,0,0,30,72,21,0,0,0,0,0,0,0,0,0,0', 10, 6, 93, 2, 0, 1, 0, 0, 4, 0); 26 INSERT INTO `ships_baubar` (`id`, `type`, `costs`, `linfactor`, `crew`, `dauer`, `ekosten`, `race`, `systemreq`, `tr1`, `tr2`, `tr3`, `werftreq`, `flagschiff`) VALUES (23, 5, '0,0,738,566,0,0,702,264,378,298,0,68,0,0,0,0,0,0,0', 140, 34, 389, 1, 1, 23, 31, 29, 8, 0); 27 INSERT INTO `ships_baubar` (`id`, `type`, `costs`, `linfactor`, `crew`, `dauer`, `ekosten`, `race`, `systemreq`, `tr1`, `tr2`, `tr3`, `werftreq`, `flagschiff`) VALUES (25, 8, '0,0,694,578,0,0,304,134,70,134,0,16,0,0,0,0,0,0,0', 30, 16, 371, 1, 1, 34, 0, 0, 6, 0); 28 INSERT INTO `ships_baubar` (`id`, `type`, `costs`, `linfactor`, `crew`, `dauer`, `ekosten`, `race`, `systemreq`, `tr1`, `tr2`, `tr3`, `werftreq`, `flagschiff`) VALUES (28, 44, '0,0,192,56,0,0,112,278,198,58,0,4,0,0,0,0,0,0,0', 20, 9, 387, 1, 0, 30, 10, 23, 6, 0); 29 INSERT INTO `ships_baubar` (`id`, `type`, `costs`, `linfactor`, `crew`, `dauer`, `ekosten`, `race`, `systemreq`, `tr1`, `tr2`, `tr3`, `werftreq`, `flagschiff`) VALUES (30, 33, '0,0,1000,2000,0,0,1000,1000,500,800,0,30,0,0,0,0,0,0,0', 120, 120, 700, 0, 0, 33, 0, 0, 7, 0); 30 INSERT INTO `ships_baubar` (`id`, `type`, `costs`, `linfactor`, `crew`, `dauer`, `ekosten`, `race`, `systemreq`, `tr1`, `tr2`, `tr3`, `werftreq`, `flagschiff`) VALUES (31, 14, '0,0,376,448,0,0,388,272,140,392,0,12,0,0,0,0,0,0,0', 5, 10, 212, 0, 1, 19, 0, 0, 3, 0); 31 INSERT INTO `ships_baubar` (`id`, `type`, `costs`, `linfactor`, `crew`, `dauer`, `ekosten`, `race`, `systemreq`, `tr1`, `tr2`, `tr3`, `werftreq`, `flagschiff`) VALUES (33, 51, '0,0,600,1200,0,0,856,1240,456,764,0,85,0,0,0,0,0,0,0', 140, 60, 800, 0, 1, 43, 0, 0, 10, 0); 32 INSERT INTO `ships_baubar` (`id`, `type`, `costs`, `linfactor`, `crew`, `dauer`, `ekosten`, `race`, `systemreq`, `tr1`, `tr2`, `tr3`, `werftreq`, `flagschiff`) VALUES (34, 6, '0,0,930,68,0,0,462,762,822,596,0,68,0,0,0,0,0,0,0', 75, 25, 512, 2, 1, 34, 0, 0, 7, 0); 33 INSERT INTO `ships_baubar` (`id`, `type`, `costs`, `linfactor`, `crew`, `dauer`, `ekosten`, `race`, `systemreq`, `tr1`, `tr2`, `tr3`, `werftreq`, `flagschiff`) VALUES (39, 54, '0,0,100,80,0,0,168,64,48,0,0,8,0,0,0,0,0,0,0', 8, 3, 200, 1, 1, 21, 4, 0, 2, 0); 34 INSERT INTO `ships_baubar` (`id`, `type`, `costs`, `linfactor`, `crew`, `dauer`, `ekosten`, `race`, `systemreq`, `tr1`, `tr2`, `tr3`, `werftreq`, `flagschiff`) VALUES (42, 9, '0,0,320,200,0,0,50,150,20,250,0,2,0,0,0,0,0,0,0', 10, 12, 150, 0, 0, 36, 63, 0, 4, 0); 35 INSERT INTO `ships_baubar` (`id`, `type`, `costs`, `linfactor`, `crew`, `dauer`, `ekosten`, `race`, `systemreq`, `tr1`, `tr2`, `tr3`, `werftreq`, `flagschiff`) VALUES (48, 1, '0,0,2567,2540,0,0,3450,1100,1240,2890,0,395,0,0,0,0,0,0,0', 280, 110, 1150, 1, 1, 65, 0, 0, 12, 1); 36 INSERT INTO `ships_baubar` (`id`, `type`, `costs`, `linfactor`, `crew`, `dauer`, `ekosten`, `race`, `systemreq`, `tr1`, `tr2`, `tr3`, `werftreq`, `flagschiff`) VALUES (49, 7, '0,0,2890,2358,0,0,3600,1400,1200,2980,0,400,0,0,0,0,0,0,0', 250, 110, 1180, 2, 1, 65, 0, 0, 12, 1); 37 INSERT INTO `ships_baubar` (`id`, `type`, `costs`, `linfactor`, `crew`, `dauer`, `ekosten`, `race`, `systemreq`, `tr1`, `tr2`, `tr3`, `werftreq`, `flagschiff`) VALUES (57, 56, '0,0,144,80,0,0,12,84,92,0,0,4,0,0,0,0,0,0,0', 4, 2, 208, 1, 1, 15, 0, 0, 1, 0); db/tables/ships_modules.sql
rf7d0517 rbed664f 28 28 `recost` smallint(5) unsigned NOT NULL default '0', 29 29 `flags` text NOT NULL, 30 `werft` varchar(16) NOT NULL default '',30 `werft` int(11) NOT NULL default '0', 31 31 `ow_werft` smallint(6) NOT NULL default '0', 32 32 PRIMARY KEY (`id`) db/updates.xml
r7a698da rbed664f 330 330 ALTER TABLE `nebel` ADD PRIMARY KEY ( `system` , `x` , `y` ); 331 331 ALTER TABLE `nebel` DROP INDEX `coords`; 332 333 ALTER TABLE `ships_baubar` DROP `linfactor`; 334 ALTER TABLE `ships_baubar` DROP `werftreq`; 335 ALTER TABLE `ships_baubar` ADD `werftslots` INT NOT NULL DEFAULT '1' AFTER `tr3` ; 336 -- Die Werte fuer ships_baubar-Eintraege sind der entsprechenden Tabelle zu entnehmen 337 338 ALTER TABLE `ship_types` CHANGE `werft` `werft` INT NOT NULL DEFAULT '0'; 339 -- Die Werte fuer ship_types-Eintraege sind der entsprechenden Tabelle zu entnehmen 340 341 ALTER TABLE `ships_modules` CHANGE `werft` `werft` INT( 11 ) NOT NULL DEFAULT '0'; 342 -- Schiffe, welche Module mit Werfteffekt haben, beduerfen fuer eine korrekte Funktion ein Aus- und Wiedereinbau des Moduls 332 343 ]]></update> 333 344 </updates> src/net/driftingsouls/ds2/server/AdminCommands.java
rcac5d78 rbed664f 215 215 216 216 Database database = ContextMap.getContext().getDatabase(); 217 if( shiptype.getWerft() .length() >0 ) {217 if( shiptype.getWerft() != 0 ) { 218 218 SQLResultRow wid = database.first("SELECT id FROM werften WHERE shipid="+ship.getId()); 219 219 if( wid.isEmpty() ) { src/net/driftingsouls/ds2/server/config/IEDraftShip.java
rb9a976a rbed664f 43 43 private int dauer = 0; 44 44 private int[] techs = null; 45 private String[] werftreq = null;45 private int werftslots = 1; 46 46 47 47 protected IEDraftShip(boolean allyEffect) { … … 127 127 128 128 /** 129 * Gibt die Werft tags zurueck, die jeweils den Bau des Schiffes ermoeglichen130 * @return Die Werft tags129 * Gibt die Werftslots zurueck, die zum Bau des Schiffes erforderlich sind 130 * @return Die Werftslots 131 131 */ 132 public String[] getWerftReqs() {133 return werft req;132 public int getWerftSlots() { 133 return werftslots; 134 134 } 135 135 … … 164 164 } 165 165 166 NodeList werftnodes = XMLUtils.getNodesByXPath(effectNode, "werft-req"); 167 draft.werftreq = new String[werftnodes.getLength()]; 168 for( int i=0; i < werftnodes.getLength(); i++ ) { 169 draft.werftreq[i] = XMLUtils.getStringAttribute(werftnodes.item(i), "type"); 170 } 166 draft.werftslots = XMLUtils.getNumberByXPath(effectNode, "werft-slots/@count").intValue(); 171 167 172 168 draft.buildcosts = new UnmodifiableCargo(new Cargo(XMLUtils.getNodeByXPath(effectNode, "buildcosts"))); src/net/driftingsouls/ds2/server/modules/ItemInfoController.java
rc5d039a rbed664f 210 210 } 211 211 212 if( mods.getWerft() != null ) { 213 if( mods.getWerft().equals("ganymed") ) { 214 effecttext.append("Ganymed-Werft"); 215 } 216 else if( mods.getWerft().equals("pwerft") ) { 217 effecttext.append("Planetare Werft"); 218 } 219 else { 220 effecttext.append("Werft: "+mods.getWerft()); 221 } 222 effecttext.append("<br />\n"); 212 if( mods.getWerft() != 0 ) { 213 colorize(effecttext, mods.getWerft()); 214 effecttext.append("Werftslots "+mods.getWerft()); 215 effecttext.append("</span><br />\n"); 223 216 } 224 217 … … 420 413 t.parse("itemdetails.entrylist", "itemdetails.entry", true); 421 414 422 data.setLength(0); 423 424 boolean first = true; 425 if( Common.inArray("pwerft", effect.getWerftReqs()) ) { 426 if( !first ) { 427 data.append("<br />\n"); 428 } 429 data.append("Planetare Werft"); 430 first = false; 431 } 432 if( Common.inArray("ganymed", effect.getWerftReqs()) ) { 433 if( !first ) { 434 data.append("<br />\n"); 435 } 436 data.append("Ganymed"); 437 first = false; 438 } 439 440 t.set_var( "entry.name", "Baubar in", 441 "entry.data", data ); 415 t.set_var( "entry.name", "Werftslots", 416 "entry.data", "<img valign=\"middle\" src=\""+Configuration.getSetting("URL")+"data/interface/schiffinfo/werftslots.png\" alt=\"\" />"+effect.getWerftSlots() ); 442 417 443 418 t.parse("itemdetails.entrylist", "itemdetails.entry", true); src/net/driftingsouls/ds2/server/modules/KapernController.java
r3bc5f3c rbed664f 415 415 .executeUpdate(); 416 416 417 if( this.targetShipType.getWerft() .length() >0 ) {417 if( this.targetShipType.getWerft() != 0 ) { 418 418 database.update("UPDATE werften SET linked=0 WHERE shipid="+this.targetShip.getId()); 419 419 } src/net/driftingsouls/ds2/server/modules/SchiffController.java
ra79c492 rbed664f 159 159 pluginMapper.put("cargo", getPluginByName("CargoDefault")); 160 160 161 if( shiptype.getWerft() .length() >0 ) {161 if( shiptype.getWerft() != 0 ) { 162 162 pluginMapper.put("werft", getPluginByName("WerftDefault")); 163 163 } src/net/driftingsouls/ds2/server/modules/SchiffInfoController.java
rd538a03 rbed664f 40 40 import net.driftingsouls.ds2.server.ships.NoSuchShipTypeException; 41 41 import net.driftingsouls.ds2.server.ships.Ship; 42 import net.driftingsouls.ds2.server.ships.ShipBaubar; 42 43 import net.driftingsouls.ds2.server.ships.ShipTypeData; 43 44 import net.driftingsouls.ds2.server.ships.ShipTypes; … … 53 54 private int shipID = 0; 54 55 private ShipTypeData ship = null; 55 private S QLResultRowshipBuildData = null;56 private ShipBaubar shipBuildData = null; 56 57 57 58 /** … … 72 73 protected boolean validateAndPrepare(String action) { 73 74 TemplateEngine t = getTemplateEngine(); 74 Database db = getDatabase();75 org.hibernate.Session db = getDB(); 75 76 User user = (User)getUser(); 76 77 int ship = getInteger("ship"); … … 104 105 } 105 106 106 S QLResultRowsw = null;107 108 if( ship != 0 ) { 107 ShipBaubar sw = null; 108 109 if( ship != 0 ) { 109 110 //Daten fuer baubare Schiffe laden 110 sw = db.first("SELECT * FROM ships_baubar WHERE type=",ship); 111 } 112 113 if( sw == null) { 114 sw = new SQLResultRow(); 111 sw = (ShipBaubar)db.createQuery("from ShipBaubar where type=?") 112 .setInteger(0, ship) 113 .setMaxResults(1) 114 .uniqueResult(); 115 115 } 116 116 … … 128 128 if( getUser() != null ) { 129 129 for( int i=1; i <= 3; i++ ) { 130 if( shipBuildData.get Int("tr"+i) != 0 ) {131 SQLResultRow dat = db.first("SELECT f.name, uf.r",shipBuildData.get Int("tr"+i)," AS research " +130 if( shipBuildData.getRes(i) != 0 ) { 131 SQLResultRow dat = db.first("SELECT f.name, uf.r",shipBuildData.getRes(i)," AS research " + 132 132 "FROM forschungen f JOIN user_f uf " + 133 "WHERE f.id=",shipBuildData.get ("tr"+i)," AND uf.id=",getUser().getID());133 "WHERE f.id=",shipBuildData.getRes(i)," AND uf.id=",getUser().getID()); 134 134 String cssClass = "error"; 135 135 if( !dat.isEmpty() && dat.getBoolean("research") ) { … … 137 137 } 138 138 139 t.set_var( "shiptype.tr"+i, shipBuildData.get Int("tr"+i),139 t.set_var( "shiptype.tr"+i, shipBuildData.getRes(i), 140 140 "shiptype.tr"+i+".name" , Common._title(dat.getString("name")), 141 141 "shiptype.tr"+i+".status", cssClass ); … … 145 145 else { 146 146 for( int i=1; i <= 3; i++ ) { 147 if( shipBuildData.get Int("tr"+i) != 0 ) {148 Forschung f = Forschung.getInstance(shipBuildData.get Int("tr"+i));149 150 t.set_var( "shiptype.tr"+i, shipBuildData.get Int("tr"+i),147 if( shipBuildData.getRes(i) != 0 ) { 148 Forschung f = Forschung.getInstance(shipBuildData.getRes(i)); 149 150 t.set_var( "shiptype.tr"+i, shipBuildData.getRes(i), 151 151 "shiptype.tr"+i+".name", Common._title(f.getName()) ); 152 152 } … … 154 154 } 155 155 String race = "???"; 156 if( shipBuildData.get Int("race") == -1 ) {156 if( shipBuildData.getRace() == -1 ) { 157 157 race = "Alle"; 158 158 } 159 159 else { 160 race = Rassen.get().rasse(shipBuildData.get Int("race")).getName();160 race = Rassen.get().rasse(shipBuildData.getRace()).getName(); 161 161 } 162 162 … … 167 167 TemplateEngine t = getTemplateEngine(); 168 168 169 t.set_var( "shiptype.cost.energie", shipBuildData.getInt("ekosten"), 170 "shiptype.cost.crew", shipBuildData.getInt("crew"), 171 "shiptype.cost.dauer", shipBuildData.getInt("dauer") ); 172 173 t.set_block("_SCHIFFINFO", "shiptype.werften.listitem", "shiptype.werften.list" ); 174 String[] werftlist = StringUtils.split(shipBuildData.getString("werftreq"), " "); 175 176 for( int i=0; i < werftlist.length; i++ ) { 177 String name = ""; 178 if( werftlist[i].equals("ganymed") ) { 179 name = "Ganymed"; 180 } 181 else if( werftlist[i].equals("pwerft") ) { 182 name = "Werft"; 183 } 184 t.set_var("werft.name", name); 185 t.parse("shiptype.werften.list", "shiptype.werften.listitem", true); 186 } 169 t.set_var( "shiptype.cost.energie", shipBuildData.getEKosten(), 170 "shiptype.cost.crew", shipBuildData.getCrew(), 171 "shiptype.cost.dauer", shipBuildData.getDauer(), 172 "shiptype.cost.werftslots", shipBuildData.getWerftSlots()); 187 173 188 174 t.set_block("_SCHIFFINFO","res.listitem","res.list"); 189 175 190 Cargo costs = new Cargo( Cargo.Type.STRING, shipBuildData.getString("costs"));176 Cargo costs = shipBuildData.getCosts(); 191 177 ResourceList reslist = costs.getResourceList(); 192 178 for( ResourceEntry res : reslist ) { … … 207 193 int visible = -1; 208 194 209 if( !shipBuildData.isEmpty()) {195 if( shipBuildData != null ) { 210 196 for( int i=1; i <= 3; i++ ) { 211 if( shipBuildData.get Int("tr"+i) != 0 ) {212 SQLResultRow research = db.first("SELECT visibility,req1,req2,req3 FROM forschungen WHERE id=",shipBuildData.get ("tr"+i));197 if( shipBuildData.getRes(i) != 0 ) { 198 SQLResultRow research = db.first("SELECT visibility,req1,req2,req3 FROM forschungen WHERE id=",shipBuildData.getRes(i)); 213 199 214 200 if( (research.getInt("visibility") != 1) && … … 216 202 !user.hasResearched(research.getInt("req2")) || !user.hasResearched(research.getInt("req3")) ) ) { 217 203 218 visible = shipBuildData.get Int("tr"+i);204 visible = shipBuildData.getRes(i); 219 205 } 220 206 } … … 223 209 224 210 if( visible > 0 ) { 225 shipBuildData .clear();211 shipBuildData = null; 226 212 227 213 if( (user != null) && user.getAccessLevel() >= 10 ) { … … 381 367 "deuterium.image", Cargo.getResourceImage(Resources.DEUTERIUM), 382 368 "antimaterie.image", Cargo.getResourceImage(Resources.ANTIMATERIE), 383 "shiptype.buildable", shipBuildData .isEmpty() ? 0:1,369 "shiptype.buildable", shipBuildData != null, 384 370 "shiptype.cost", ship.getCost(), 385 371 "shiptype.heat", ship.getHeat(), … … 396 382 "shiptype.deutfactor", ship.getDeutFactor(), 397 383 "shiptype.hydro", ship.getHydro(), 398 "shiptype.flagschiff", !shipBuildData.isEmpty() && shipBuildData.getBoolean("flagschiff"),384 "shiptype.flagschiff", shipBuildData != null && shipBuildData.isFlagschiff(), 399 385 "shiptype.recost", ship.getReCost(), 400 386 "shiptype.torpedodef", ship.getTorpedoDef(), … … 410 396 } 411 397 412 if( !shipBuildData.isEmpty()) {398 if( shipBuildData != null ) { 413 399 outPrerequisites(); 414 400 } 415 401 416 402 //Produktionskosten anzeigen, sofern das Schiff baubar ist 417 if( !shipBuildData.isEmpty()) {403 if( shipBuildData != null ) { 418 404 outShipCost(); 419 405 } src/net/driftingsouls/ds2/server/modules/SchiffeController.java
r6b67f71 rbed664f 304 304 } 305 305 306 if( shiptype.getWerft() .length() >0 ) {306 if( shiptype.getWerft() != 0 ) { 307 307 ShipWerft werft = (ShipWerft)db.createQuery("from ShipWerft where shipid=?") 308 308 .setEntity(0, ship) src/net/driftingsouls/ds2/server/modules/admin/AddShips.java
r283e6c7 rbed664f 307 307 query.close(); 308 308 309 if( shiptype.getWerft() .length() >0 ) {309 if( shiptype.getWerft() != 0 ) { 310 310 db.update("INSERT INTO werften (shipid) VALUES ("+shipid+")"); 311 311 } src/net/driftingsouls/ds2/server/modules/ks/KSKapernAction.java
r2c96489 rbed664f 285 285 .setString(1, "s "+dockShip.getId()) 286 286 .executeUpdate(); 287 if( dockShip.getTypeData().getWerft() .length() >0 ) {287 if( dockShip.getTypeData().getWerft() != 0 ) { 288 288 db.createQuery("update ShipWerft set linked=null where shipid=?") 289 289 .setEntity(0, dockShip) … … 298 298 .setString(1, "s "+enemyShip.getId()) 299 299 .executeUpdate(); 300 if( enemyShipType.getWerft() .length() >0 ) {300 if( enemyShipType.getWerft() != 0 ) { 301 301 db.createQuery("update ShipWerft set linked=null where shipid=?") 302 302 .setEntity(0, enemyShip) src/net/driftingsouls/ds2/server/modules/schiffplugins/SensorsDefault.java
rd230b2f rbed664f 689 689 690 690 //Schiff in die Werft fliegen 691 if( (datas.getInt("owner") == user.getID()) && (ashiptype.getWerft() .length() >0) ) {691 if( (datas.getInt("owner") == user.getID()) && (ashiptype.getWerft() != 0) ) { 692 692 t.set_var("sships.action.repair",1); 693 693 } src/net/driftingsouls/ds2/server/ships/AbstractShipTypeDataWrapper.java
rd499c3e rbed664f 192 192 } 193 193 194 public StringgetWerft() {194 public int getWerft() { 195 195 return inner.getWerft(); 196 196 } src/net/driftingsouls/ds2/server/ships/ShipBaubar.java
r9db63de rbed664f 48 48 @Type(type="cargo") 49 49 private Cargo costs; 50 @Column(name="linkfactor")51 private double linFactor;52 50 private int crew; 53 51 private int dauer; … … 60 58 private int tr2; 61 59 private int tr3; 62 @Column(name="werft req")63 private String werftReq;60 @Column(name="werftslots") 61 private int werftSlots; 64 62 private boolean flagschiff; 65 63 … … 121 119 122 120 /** 123 * Gibt den Faktor fuer steigende Kosten zurueck124 * @return Der Faktor fuer steigende Kosten125 */126 public double getLinFactor() {127 return linFactor;128 }129 130 /**131 121 * Gibt die Rasse zurueck, die diesen Baueintrag nutzen kann 132 122 * @return Die Rasse … … 158 148 return tr3; 159 149 } 160 throw new RuntimeException("Ungueltige Forschungsnummer '"+res+"'");150 throw new IllegalArgumentException("Ungueltige Forschungsnummer '"+res+"'"); 161 151 } 162 152 … … 170 160 171 161 /** 172 * Gibt die zum Bau benoetigte Werft zurueck162 * Gibt die zum Bau benoetigte Werftslots zurueck 173 163 * @return Die Werft-Requirements 174 164 */ 175 public String getWerftReq() {176 return werft Req;165 public int getWerftSlots() { 166 return werftSlots; 177 167 } 178 179 180 168 } src/net/driftingsouls/ds2/server/ships/ShipModules.java
rd499c3e rbed664f 73 73 private int reCost; 74 74 private String flags; 75 private Stringwerft;75 private int werft; 76 76 @Column(name="ow_werft") 77 77 private int oneWayWerft; … … 438 438 } 439 439 440 public StringgetWerft() {440 public int getWerft() { 441 441 return werft; 442 442 } … … 446 446 * @param werft Die Werftdaten 447 447 */ 448 public void setWerft( Stringwerft) {448 public void setWerft(int werft) { 449 449 this.werft = werft; 450 450 } src/net/driftingsouls/ds2/server/ships/ShipType.java
r5defe0d
