Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
ziqian zhang
Grasscutter
Commits
fbf3dbbf
Commit
fbf3dbbf
authored
Aug 25, 2022
by
AnimeGitB
Browse files
Move vehicle fightprop hacks
parent
9970aeb9
Changes
5
Hide whitespace changes
Inline
Side-by-side
src/main/java/emu/grasscutter/command/commands/SpawnCommand.java
View file @
fbf3dbbf
...
...
@@ -83,33 +83,18 @@ public final class SpawnCommand implements CommandHandler {
}
double
maxRadius
=
Math
.
sqrt
(
amount
*
0.2
/
Math
.
PI
);
Position
center
=
(
x
!=
0
&&
y
!=
0
&&
z
!=
0
)
?
(
new
Position
(
x
,
y
,
z
))
:
(
targetPlayer
.
getPosition
());
for
(
int
i
=
0
;
i
<
amount
;
i
++)
{
Position
pos
=
GetRandomPositionInCircle
(
targetPlayer
.
getPosition
(),
maxRadius
).
addY
(
3
);
if
(
x
!=
0
&&
y
!=
0
&&
z
!=
0
)
{
pos
=
GetRandomPositionInCircle
(
new
Position
(
x
,
y
,
z
),
maxRadius
).
addY
(
3
);
}
Position
pos
=
GetRandomPositionInCircle
(
center
,
maxRadius
).
addY
(
3
);
GameEntity
entity
=
null
;
if
(
itemData
!=
null
)
{
entity
=
new
EntityItem
(
scene
,
null
,
itemData
,
pos
,
1
,
true
);
}
if
(
gadgetData
!=
null
)
{
pos
.
addY
(-
3
);
entity
=
new
EntityVehicle
(
scene
,
targetPlayer
.
getSession
().
getPlayer
(),
gadgetData
.
getId
(),
0
,
pos
,
targetPlayer
.
getRotation
());
// TODO: does targetPlayer.getSession().getPlayer() have some meaning?
int
gadgetId
=
gadgetData
.
getId
();
switch
(
gadgetId
)
{
// TODO: Not hardcode this. Waverider (skiff)
case
45001001
,
45001002
->
{
entity
.
addFightProperty
(
FightProperty
.
FIGHT_PROP_BASE_HP
,
10000
);
entity
.
addFightProperty
(
FightProperty
.
FIGHT_PROP_BASE_ATTACK
,
100
);
entity
.
addFightProperty
(
FightProperty
.
FIGHT_PROP_CUR_ATTACK
,
100
);
entity
.
addFightProperty
(
FightProperty
.
FIGHT_PROP_CUR_HP
,
10000
);
entity
.
addFightProperty
(
FightProperty
.
FIGHT_PROP_CUR_DEFENSE
,
0
);
entity
.
addFightProperty
(
FightProperty
.
FIGHT_PROP_CUR_SPEED
,
0
);
entity
.
addFightProperty
(
FightProperty
.
FIGHT_PROP_CHARGE_EFFICIENCY
,
0
);
entity
.
addFightProperty
(
FightProperty
.
FIGHT_PROP_MAX_HP
,
10000
);
}
default
->
{}
}
entity
=
new
EntityVehicle
(
scene
,
targetPlayer
,
id
,
0
,
pos
,
targetPlayer
.
getRotation
());
}
if
(
monsterData
!=
null
)
{
entity
=
new
EntityMonster
(
scene
,
monsterData
,
pos
,
level
);
...
...
src/main/java/emu/grasscutter/game/entity/EntityBaseGadget.java
View file @
fbf3dbbf
package
emu.grasscutter.game.entity
;
import
emu.grasscutter.game.world.Scene
;
import
emu.grasscutter.game.world.World
;
public
abstract
class
EntityBaseGadget
extends
GameEntity
{
...
...
src/main/java/emu/grasscutter/game/entity/EntityVehicle.java
View file @
fbf3dbbf
...
...
@@ -2,6 +2,7 @@ package emu.grasscutter.game.entity;
import
emu.grasscutter.game.player.Player
;
import
emu.grasscutter.game.props.EntityIdType
;
import
emu.grasscutter.game.props.FightProperty
;
import
emu.grasscutter.game.props.PlayerProperty
;
import
emu.grasscutter.game.world.Scene
;
...
...
@@ -10,7 +11,6 @@ import emu.grasscutter.net.proto.AnimatorParameterValueInfoPairOuterClass.Animat
import
emu.grasscutter.net.proto.EntityAuthorityInfoOuterClass.EntityAuthorityInfo
;
import
emu.grasscutter.net.proto.EntityRendererChangedInfoOuterClass.EntityRendererChangedInfo
;
import
emu.grasscutter.net.proto.FightPropPairOuterClass.*
;
import
emu.grasscutter.net.proto.GadgetInteractReqOuterClass.GadgetInteractReq
;
import
emu.grasscutter.net.proto.MotionInfoOuterClass.MotionInfo
;
import
emu.grasscutter.net.proto.PropPairOuterClass.PropPair
;
import
emu.grasscutter.net.proto.ProtEntityTypeOuterClass.ProtEntityType
;
...
...
@@ -25,23 +25,25 @@ import emu.grasscutter.utils.ProtoHelper;
import
it.unimi.dsi.fastutil.ints.Int2FloatMap
;
import
it.unimi.dsi.fastutil.ints.Int2FloatOpenHashMap
;
import
lombok.Getter
;
import
lombok.Setter
;
import
java.util.List
;
import
java.util.ArrayList
;
public
class
EntityVehicle
extends
EntityBaseGadget
{
private
final
Player
owner
;
private
final
Int2Float
OpenHash
Map
fightProp
;
@Getter
private
final
Player
owner
;
private
final
Int2FloatMap
fightProp
;
private
final
Position
pos
;
private
final
Position
rot
;
private
final
int
pointId
;
private
final
int
gadgetId
;
@Getter
private
final
int
pointId
;
@Getter
private
final
int
gadgetId
;
private
float
curStamina
;
private
List
<
VehicleMember
>
vehicleMembers
;
@Getter
@Setter
private
float
curStamina
;
@Getter
private
List
<
VehicleMember
>
vehicleMembers
;
public
EntityVehicle
(
Scene
scene
,
Player
player
,
int
gadgetId
,
int
pointId
,
Position
pos
,
Position
rot
)
{
super
(
scene
);
...
...
@@ -54,25 +56,23 @@ public class EntityVehicle extends EntityBaseGadget {
this
.
pointId
=
pointId
;
this
.
curStamina
=
240
;
this
.
vehicleMembers
=
new
ArrayList
<
VehicleMember
>();
}
@Override
public
int
getGadgetId
()
{
return
gadgetId
;
}
public
Player
getOwner
()
{
return
owner
;
switch
(
gadgetId
)
{
case
45001001
,
45001002
->
{
// TODO: Not hardcode this. Waverider (skiff)
this
.
addFightProperty
(
FightProperty
.
FIGHT_PROP_BASE_HP
,
10000
);
this
.
addFightProperty
(
FightProperty
.
FIGHT_PROP_BASE_ATTACK
,
100
);
this
.
addFightProperty
(
FightProperty
.
FIGHT_PROP_CUR_ATTACK
,
100
);
this
.
addFightProperty
(
FightProperty
.
FIGHT_PROP_CUR_HP
,
10000
);
this
.
addFightProperty
(
FightProperty
.
FIGHT_PROP_CUR_DEFENSE
,
0
);
this
.
addFightProperty
(
FightProperty
.
FIGHT_PROP_CUR_SPEED
,
0
);
this
.
addFightProperty
(
FightProperty
.
FIGHT_PROP_CHARGE_EFFICIENCY
,
0
);
this
.
addFightProperty
(
FightProperty
.
FIGHT_PROP_MAX_HP
,
10000
);
}
}
}
public
float
getCurStamina
()
{
return
curStamina
;
}
public
void
setCurStamina
(
float
stamina
)
{
this
.
curStamina
=
stamina
;
}
public
int
getPointId
()
{
return
pointId
;
}
public
List
<
VehicleMember
>
getVehicleMembers
()
{
return
vehicleMembers
;
}
@Override
public
Int2Float
OpenHash
Map
getFightProperties
()
{
public
Int2FloatMap
getFightProperties
()
{
return
fightProp
;
}
...
...
src/main/java/emu/grasscutter/game/entity/GameEntity.java
View file @
fbf3dbbf
package
emu.grasscutter.game.entity
;
import
java.util.HashMap
;
import
java.util.Map
;
import
emu.grasscutter.game.player.Player
;
import
emu.grasscutter.game.props.FightProperty
;
import
emu.grasscutter.game.props.LifeState
;
...
...
@@ -20,25 +17,28 @@ import emu.grasscutter.server.event.entity.EntityDeathEvent;
import
emu.grasscutter.server.packet.send.PacketEntityFightPropUpdateNotify
;
import
emu.grasscutter.utils.Position
;
import
it.unimi.dsi.fastutil.ints.Int2FloatMap
;
import
it.unimi.dsi.fastutil.ints.Int2FloatOpenHashMap
;
import
it.unimi.dsi.fastutil.ints.Int2ObjectMap
;
import
it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap
;
import
it.unimi.dsi.fastutil.objects.Object2FloatMap
;
import
it.unimi.dsi.fastutil.objects.Object2FloatOpenHashMap
;
import
lombok.Getter
;
import
lombok.Setter
;
public
abstract
class
GameEntity
{
protected
int
id
;
private
final
Scene
scene
;
private
SpawnDataEntry
spawnEntry
;
@Getter
protected
int
id
;
@Getter
private
final
Scene
scene
;
@Getter
@Setter
private
SpawnDataEntry
spawnEntry
;
private
int
blockId
;
private
int
configId
;
private
int
groupId
;
@Getter
@Setter
private
int
blockId
;
@Getter
@Setter
private
int
configId
;
@Getter
@Setter
private
int
groupId
;
private
MotionState
moveState
;
private
int
lastMoveSceneTimeMs
;
private
int
lastMoveReliableSeq
;
@Getter
@Setter
private
int
lastMoveSceneTimeMs
;
@Getter
@Setter
private
int
lastMoveReliableSeq
;
// Abilities
private
Map
<
String
,
Float
>
metaOverrideMap
;
private
Object2Float
Map
<
String
>
metaOverrideMap
;
private
Int2ObjectMap
<
String
>
metaModifiers
;
public
GameEntity
(
Scene
scene
)
{
...
...
@@ -46,10 +46,6 @@ public abstract class GameEntity {
this
.
moveState
=
MotionState
.
MOTION_STATE_NONE
;
}
public
int
getId
()
{
return
this
.
id
;
}
public
int
getEntityType
()
{
return
this
.
getId
()
>>
24
;
}
...
...
@@ -58,10 +54,6 @@ public abstract class GameEntity {
return
this
.
getScene
().
getWorld
();
}
public
Scene
getScene
()
{
return
this
.
scene
;
}
public
boolean
isAlive
()
{
return
true
;
}
...
...
@@ -70,9 +62,9 @@ public abstract class GameEntity {
return
this
.
isAlive
()
?
LifeState
.
LIFE_ALIVE
:
LifeState
.
LIFE_DEAD
;
}
public
Map
<
String
,
Float
>
getMetaOverrideMap
()
{
public
Object2Float
Map
<
String
>
getMetaOverrideMap
()
{
if
(
this
.
metaOverrideMap
==
null
)
{
this
.
metaOverrideMap
=
new
HashMap
<>();
this
.
metaOverrideMap
=
new
Object2FloatOpen
HashMap
<>();
}
return
this
.
metaOverrideMap
;
}
...
...
@@ -84,7 +76,7 @@ public abstract class GameEntity {
return
this
.
metaModifiers
;
}
public
abstract
Int2Float
OpenHash
Map
getFightProperties
();
public
abstract
Int2FloatMap
getFightProperties
();
public
abstract
Position
getPosition
();
...
...
@@ -98,27 +90,11 @@ public abstract class GameEntity {
this
.
moveState
=
moveState
;
}
public
int
getLastMoveSceneTimeMs
()
{
return
lastMoveSceneTimeMs
;
}
public
void
setLastMoveSceneTimeMs
(
int
lastMoveSceneTimeMs
)
{
this
.
lastMoveSceneTimeMs
=
lastMoveSceneTimeMs
;
}
public
int
getLastMoveReliableSeq
()
{
return
lastMoveReliableSeq
;
}
public
void
setLastMoveReliableSeq
(
int
lastMoveReliableSeq
)
{
this
.
lastMoveReliableSeq
=
lastMoveReliableSeq
;
}
public
void
setFightProperty
(
FightProperty
prop
,
float
value
)
{
this
.
getFightProperties
().
put
(
prop
.
getId
(),
value
);
}
p
rivate
void
setFightProperty
(
int
id
,
float
value
)
{
p
ublic
void
setFightProperty
(
int
id
,
float
value
)
{
this
.
getFightProperties
().
put
(
id
,
value
);
}
...
...
@@ -140,30 +116,6 @@ public abstract class GameEntity {
}
}
public
int
getBlockId
()
{
return
blockId
;
}
public
void
setBlockId
(
int
blockId
)
{
this
.
blockId
=
blockId
;
}
public
int
getConfigId
()
{
return
configId
;
}
public
void
setConfigId
(
int
configId
)
{
this
.
configId
=
configId
;
}
public
int
getGroupId
()
{
return
groupId
;
}
public
void
setGroupId
(
int
groupId
)
{
this
.
groupId
=
groupId
;
}
protected
MotionInfo
getMotionInfo
()
{
MotionInfo
proto
=
MotionInfo
.
newBuilder
()
.
setPos
(
this
.
getPosition
().
toProto
())
...
...
@@ -175,14 +127,6 @@ public abstract class GameEntity {
return
proto
;
}
public
SpawnDataEntry
getSpawnEntry
()
{
return
spawnEntry
;
}
public
void
setSpawnEntry
(
SpawnDataEntry
spawnEntry
)
{
this
.
spawnEntry
=
spawnEntry
;
}
public
float
heal
(
float
amount
)
{
if
(
this
.
getFightProperties
()
==
null
)
{
return
0
f
;
...
...
src/main/java/emu/grasscutter/server/packet/send/PacketCreateVehicleRsp.java
View file @
fbf3dbbf
...
...
@@ -2,7 +2,6 @@ package emu.grasscutter.server.packet.send;
import
emu.grasscutter.game.player.Player
;
import
emu.grasscutter.game.entity.EntityVehicle
;
import
emu.grasscutter.game.props.FightProperty
;
import
emu.grasscutter.game.entity.GameEntity
;
import
emu.grasscutter.net.packet.BasePacket
;
...
...
@@ -40,22 +39,6 @@ public class PacketCreateVehicleRsp extends BasePacket {
});
EntityVehicle
vehicle
=
new
EntityVehicle
(
player
.
getScene
(),
player
,
vehicleId
,
pointId
,
pos
,
rot
);
switch
(
vehicleId
)
{
// TODO: Not hardcode this. Waverider (skiff)
case
45001001
,
45001002
->
{
vehicle
.
addFightProperty
(
FightProperty
.
FIGHT_PROP_BASE_HP
,
10000
);
vehicle
.
addFightProperty
(
FightProperty
.
FIGHT_PROP_BASE_ATTACK
,
100
);
vehicle
.
addFightProperty
(
FightProperty
.
FIGHT_PROP_CUR_ATTACK
,
100
);
vehicle
.
addFightProperty
(
FightProperty
.
FIGHT_PROP_CUR_HP
,
10000
);
vehicle
.
addFightProperty
(
FightProperty
.
FIGHT_PROP_CUR_DEFENSE
,
0
);
vehicle
.
addFightProperty
(
FightProperty
.
FIGHT_PROP_CUR_SPEED
,
0
);
vehicle
.
addFightProperty
(
FightProperty
.
FIGHT_PROP_CHARGE_EFFICIENCY
,
0
);
vehicle
.
addFightProperty
(
FightProperty
.
FIGHT_PROP_MAX_HP
,
10000
);
}
default
->
{}
}
player
.
getScene
().
addEntity
(
vehicle
);
proto
.
setVehicleId
(
vehicleId
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment